¿Cómo pruebo una cadena para ver si contiene alguna de las cadenas de una matriz?
En lugar de usar
if (string.contains(item1) || string.contains(item2) || string.contains(item3))
java
string
coding-style
if-statement
arowell
fuente
fuente
Respuestas:
EDITAR: Aquí hay una actualización que usa la API Java 8 Streaming. Mucho más limpio. Todavía se puede combinar con expresiones regulares también.
Además, si cambiamos el tipo de entrada a una Lista en lugar de una matriz que podemos usar
items.parallelStream().anyMatch(inputStr::contains)
.También puede usar
.filter(inputStr::contains).findAny()
si desea devolver la cadena coincidente.Respuesta original ligeramente anticuada:
Aquí hay un método estático (MUY BÁSICO). Tenga en cuenta que distingue entre mayúsculas y minúsculas en las cadenas de comparación. Una forma primitiva de hacer que no distinga entre mayúsculas y minúsculas sería llamar
toLowerCase()
otoUpperCase()
en las cadenas de entrada y prueba.Si necesita hacer algo más complicado que esto, le recomendaría que mire las clases de Patrón y Matcher y aprenda a hacer algunas expresiones regulares. Una vez que los comprenda, puede usar esas clases o el
String.matches()
método auxiliar.fuente
Utilidades de cadena
Utilizar:
Devolverá el índice de la cadena encontrada o -1 si no se encuentra ninguno.
fuente
Puede usar el método String # coincide de esta manera:
fuente
La forma más fácil probablemente sería convertir la matriz en java.util.ArrayList. Una vez que se encuentra en una lista de arrays, puede aprovechar fácilmente el método contiene.
fuente
string
contiene algunaString
s en la matriz, no si algunaString
s en la matriz contienestring
..equals()
en su publicación, lo cual es muy confuso. Supongo que necesitan editar su preguntaSi usa Java 8 o superior, puede confiar en Stream API para hacer lo siguiente:
Suponiendo que tiene una gran variedad de grandes
String
para probar, también podría iniciar la búsqueda en paralelo llamandoparallel()
, el código sería:fuente
Aquí hay una solución:
fuente
Desde la versión 3.4, Apache Common Lang 3 implementa el método contiene cualquier .
fuente
Un enfoque más groovyesco sería usar inyectar en combinación con metaClass :
Me encantaría decir:
Y el método sería:
Si necesita contieneAny para estar presente en cualquier variable de cadena futura, agregue el método a la clase en lugar del objeto:
fuente
Prueba esto:
fuente
Y si está buscando una coincidencia entre mayúsculas y minúsculas, use el patrón
fuente
Si está buscando palabras completas , puede hacer esto que no distingue entre mayúsculas y minúsculas .
fuente
También podemos hacer así:
fuente
Lo siguiente debería funcionar para usted suponiendo que Strings es la matriz en la que está buscando:
donde mykeytosearch es la cadena que desea probar para la existencia dentro de la matriz. mysearchComparator: es un comparador que se usaría para comparar cadenas.
Consulte Arrays.binarySearch para obtener más información.
fuente
fuente