Tengo esta serie de cadenas:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
Me gustaría determinar si stringArray
contiene value
. Si es así, quiero ubicar su posición en la matriz.
No quiero usar bucles. ¿Alguien puede sugerir cómo podría hacer esto?
Array.IndexOf
importa la capitalización? Hace"text1" == "TEXT1"
?Array.IndexOf
−1
solo se devuelve si el índice tiene un límite de 0. Este caso se rompería, ¡así que ten cuidado!var a = Array.CreateInstance(typeof(int),new int[] { 2 }, new int[] { 1 }); a.SetValue(1, 1); Console.WriteLine(Array.IndexOf(a, 26)); // 0
fuente
También podemos usar
Exists
:fuente
char
no se puede convertir enSystem.Predicate<char>
EDITAR: No me había dado cuenta de que también necesitabas el puesto. No se puede usar
IndexOf
directamente en un valor de un tipo de matriz, porque está implementado explícitamente. Sin embargo, puedes usar:(Esto es similar a llamar
Array.IndexOf
según la respuesta de Darin, solo un enfoque alternativo. No me queda claro por qué se implementa explícitamente en matrices, pero no importa ...)IList<T>.IndexOf
fuente
if (months.Contains(model.Month))
Puede usar
Array.IndexOf()
: tenga en cuenta que devolverá -1 si no se ha encontrado el elemento y tiene que manejar este caso.fuente
puede intentar de esta manera ... puede usar Array.IndexOf (), si desea conocer la posición también
fuente
En mi opinión, la mejor manera de verificar si una matriz contiene un valor dado es usar el
System.Collections.Generic.IList<T>.Contains(T item)
método de la siguiente manera:Ejemplo de código completo:
T[]
Las matrices implementan de forma privada algunos métodosList<T>
, como Count and Contains. Debido a que es una implementación explícita (privada), no podrá usar estos métodos sin convertir primero la matriz. Esto no solo funciona para cadenas: puede usar este truco para verificar si una matriz de cualquier tipo contiene algún elemento, siempre que la clase del elemento implemente IComparable.Tenga en cuenta que no todos los
IList<T>
métodos funcionan de esta manera. Intentar usarIList<T>
el método Add en una matriz fallará.fuente
Puede intentar esto, busca el índice que contiene este elemento y establece el número de índice como int, luego comprueba si int es mayor que -1, por lo que si es 0 o más, significa que encontró un índice, ya que las matrices están basadas en 0.
fuente
fuente
Creé un método de extensión para reutilizar.
Cómo llamarlo:
fuente
position
que solicita el OP?fuente
El método más simple y más corto sería el siguiente.
fuente
Contains
método no tienes esta información