Eu tenho essa matriz de seqüência de caracteres:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
Eu gostaria de determinar se stringArray
contém value
. Nesse caso, quero localizar sua posição na matriz.
Eu não quero usar loops. Alguém pode sugerir como eu posso fazer isso?
Array.IndexOf
importa com capitalização? Faz"text1" == "TEXT1"
?Array.IndexOf
retorna−1
somente se o índice for delimitado por 0. Este caso iria quebrar, então esteja ciente!var a = Array.CreateInstance(typeof(int),new int[] { 2 }, new int[] { 1 }); a.SetValue(1, 1); Console.WriteLine(Array.IndexOf(a, 26)); // 0
fonte
Também podemos usar
Exists
:fonte
char
não pode ser convertida emSystem.Predicate<char>
Edição: Eu não tinha notado que você precisava da posição também. Você não pode usar
IndexOf
diretamente em um valor de um tipo de matriz, porque é implementado explicitamente. No entanto, você pode usar:(Isso é semelhante a chamar de
Array.IndexOf
acordo com a resposta de Darin - apenas uma abordagem alternativa. Não está claro para mim por que é implementado explicitamente em matrizes, mas não importa ...)IList<T>.IndexOf
fonte
if (months.Contains(model.Month))
Você pode usar
Array.IndexOf()
- observe que ele retornará -1 se o elemento não tiver sido encontrado e você tiver que lidar com este caso.fonte
você pode tentar assim ... você pode usar Array.IndexOf (), se você quiser conhecer a posição também
fonte
A melhor maneira de verificar se uma matriz contém um determinado valor é usar o
System.Collections.Generic.IList<T>.Contains(T item)
método da seguinte maneira:Exemplo de código completo:
T[]
matrizes implementam privadamente alguns métodos deList<T>
, como Count e Contains. Por ser uma implementação explícita (privada), você não poderá usar esses métodos sem lançar a matriz primeiro. Isso não funciona apenas para strings - você pode usar este truque para verificar se uma matriz de qualquer tipo contém algum elemento, desde que a classe do elemento implemente IComparable.Lembre-se de que nem todos os
IList<T>
métodos funcionam dessa maneira. A tentativa de usarIList<T>
o método Add em uma matriz falhará.fonte
Você pode tentar isso, procura o índice que contém esse elemento e define o número do índice como int; depois, verifica se o int é maior que -1; portanto, se é 0 ou mais, significa que encontrou um índice - como matrizes são baseadas em 0.
fonte
fonte
Eu criei um método de extensão para reutilização.
Como chamá-lo:
fonte
position
que o OP está pedindo?fonte
O método mais simples e mais curto seria o seguinte.
fonte
Contains
método você não tem essas informações #