Como testar uma string para ver se ela contém alguma das strings de uma matriz?
Ao invés de usar
if (string.contains(item1) || string.contains(item2) || string.contains(item3))
java
string
coding-style
if-statement
arowell
fonte
fonte
Respostas:
EDIT: Aqui está uma atualização usando o Java 8 Streaming API. Muito mais limpo. Ainda pode ser combinado com expressões regulares também.
Além disso, se alterarmos o tipo de entrada para uma lista em vez de uma matriz, podemos usar
items.parallelStream().anyMatch(inputStr::contains)
.Você também pode usar
.filter(inputStr::contains).findAny()
se desejar retornar a sequência correspondente.Resposta original ligeiramente datada:
Aqui está um método estático (MUITO BÁSICO). Observe que diferencia maiúsculas de minúsculas nas seqüências de comparação. Uma maneira primitiva de diferenciar maiúsculas de minúsculas seria chamar
toLowerCase()
outoUpperCase()
nas cadeias de entrada e de teste.Se você precisar fazer algo mais complicado do que isso, recomendo examinar as classes Pattern e Matcher e aprender a fazer algumas expressões regulares. Depois de entender essas, você pode usar essas classes ou o
String.matches()
método auxiliar.fonte
Utilitários de String
Usar:
Ele retornará o índice da sequência encontrada ou -1 se nenhuma for encontrada.
fonte
Você pode usar o método String # corresponde assim:
fonte
A maneira mais fácil provavelmente seria converter a matriz em um java.util.ArrayList. Uma vez em uma lista de matrizes, você pode facilmente aproveitar o método contains.
fonte
string
contém algumString
s na matriz, não se houver algumString
s na matrizstring
..equals()
no post deles, o que é muito confuso. Eu acho que eles precisam editar sua perguntaSe você usa o Java 8 ou superior, pode confiar na API Stream para fazer isso:
Supondo que você tenha uma grande variedade de coisas grandes
String
para testar, você também pode iniciar a pesquisa em paralelo chamandoparallel()
, o código seria:fonte
Aqui está uma solução:
fonte
Desde a versão 3.4, o Apache Common Lang 3 implementa o método containsAny .
fonte
Uma abordagem mais groovyesque seria usar injetar em combinação com metaClass :
Eu adoraria dizer:
E o método seria:
Se você precisar que o containsAny esteja presente para qualquer variável String futura, adicione o método à classe em vez do objeto:
fonte
Tente o seguinte:
fonte
E se você estiver procurando por correspondência sem distinção entre maiúsculas e minúsculas, use o padrão
fonte
Se você busca palavras inteiras, pode fazer isso que não diferencia maiúsculas de minúsculas .
fonte
Também podemos fazer assim:
fonte
O abaixo deve funcionar para você, assumindo que Strings é a matriz em que você está pesquisando:
onde mykeytosearch é a sequência que você deseja testar quanto à existência na matriz. mysearchComparator - é um comparador que seria usado para comparar strings.
Consulte Arrays.binarySearch para obter mais informações.
fonte
fonte