Eu quero usar c # para verificar se um valor de seqüência de caracteres contém uma palavra em uma matriz de seqüência de caracteres. Por exemplo,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
Como posso verificar se o valor da string 'stringToCheck' contém uma palavra na matriz?
Respostas:
Aqui está como você pode fazer isso:
ATUALIZAÇÃO: Talvez você esteja procurando uma solução melhor. Consulte a resposta de @Anton Gogolev abaixo, que utiliza o LINQ.
fonte
Aqui está como:
Isso verifica se
stringToCheck
contém alguma das substrings destringArray
. Se você deseja garantir que ele contenha todas as substrings, altereAny
paraAll
:fonte
stringArray.Any(s => s.IndexOf(stringToCheck, StringComparison.CurrentCultureIgnoreCase) > -1)
Tente o seguinte:
Não há necessidade de usar o LINQ
fonte
stringArray.Any(w => stringToCheck.IndexOf(w) >= 0)
mas a resposta do Linq usando o String.Contains faz mais sentido, pois é exatamente isso que está sendo solicitado.Basta usar o método linq:
fonte
using System.Linq;
Maneira mais fácil e amostra.
fonte
fonte
Algo assim talvez:
fonte
String.Contains
pode ser melhor do que, aString.IndexOf
menos que você queira ignorar o caso, uma vez que a Microsoft esqueceu um argumento de dois,String.Contains
você deve escrever o seu próprio. Considere:Array.Exists(stringArray, s => stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1)
Usar o Linq e o grupo de métodos seria a maneira mais rápida e compacta de fazer isso.
fonte
Você pode definir o seu próprio
string.ContainsAny()
estring.ContainsAll()
métodos. Como bônus, eu até joguei umstring.Contains()
método que permite uma comparação sem distinção entre maiúsculas e minúsculas, etc.Você pode testá-los com o seguinte código:
fonte
Eu uso o seguinte em um aplicativo de console para verificar argumentos
fonte
Eu usaria o Linq, mas ainda pode ser feito através de:
fonte
Experimentar:
fonte
Você também pode fazer a mesma coisa que Anton Gogolev sugere para verificar se qualquer item em
stringArray1
corresponda qualquer item emstringArray2
:E da mesma forma todos os itens em stringArray1 correspondem a todos os itens em stringArray2:
fonte
fonte
tente isto, aqui o exemplo: Para verificar se o campo contém alguma das palavras na matriz. Para verificar se o campo (someField) contém alguma das palavras na matriz.
fonte
fonte
Usei um método semelhante ao IndexOf de Maitrey684 e ao loop foreach de Theomax para criar isso. (Nota: as 3 primeiras linhas de "sequência" são apenas um exemplo de como você pode criar uma matriz e colocá-la no formato correto).
Se você quiser comparar duas matrizes, elas serão delimitadas por ponto e vírgula, mas o último valor não terá um depois. Se você anexar um ponto-e-vírgula à forma de seqüência de caracteres da matriz (ou seja, a; b; c se torna a; b; c;), poderá fazer a correspondência usando "x;" não importa em que posição esteja:
fonte
bFound será true se a string pesquisada corresponder a qualquer elemento das 'linhas' da matriz.
fonte
Tente isto
Ele retornará a linha com a primeira incidência do texto que você está procurando.
fonte
Se
stringArray
contiver um grande número de cadeias de comprimento variadas, considere usar uma Trie para armazenar e pesquisar na matriz de cadeias.Aqui está a implementação da
Trie
classeSe todas as seqüências de caracteres
stringArray
tiverem o mesmo comprimento, será melhor usar apenas um aoHashSet
invés de umTrie
fonte
Solução simples, não é necessário linq qualquer
String.Join (",", array) .Contains (Value + ",");
fonte
fonte
Tente isso, não há necessidade de um loop ..
fonte
Para concluir as respostas acima, para a verificação do IgnoreCase, use:
fonte
Para o meu caso, as respostas acima não funcionaram. Eu estava verificando uma string em uma matriz e atribuindo-a a um valor booleano. Modifiquei a resposta de @Anton Gogolev e removi o
Any()
método e coloquei ostringToCheck
interior doContains()
método.fonte
Usando os métodos Find ou FindIndex da classe Array :
fonte
Usei o seguinte código para verificar se a string continha algum dos itens na matriz de string:
fonte
Text = "matched"
quantas vezesstringToCheck
contém substrings destringArray
. Você pode colocar umabreak
oureturn
depois da tarefa.Três opções demonstradas. Prefiro encontrar o terceiro como o mais conciso.
fonte