Quiero construir un método int getIndexOfFirstFound(String text, String[] words)
.
El método de recibir un texto y matriz de palabras y debe devolver el índice de la primera palabra que se encuentra.
Sé que hacerlo con iteración simple, como esto:
for (String word : words) {
if (text.indexOf(word) != -1) return text.indexOf(word);
}
return -1;
pero para mi formación miro cómo hacerlo con lambda, si es posible ... Sé que puedo comprobar si la cadena contiene una palabra de la matriz: Arrays.stream(words).parallel().anyMatch(text::contains)
pero no sé cómo devolver el índice ..
Estarán encantados de saber cómo encontrar el índice palabra primero encontrado con forma moderna, gracias!
Ejemplo PS:
Text
= "Hola soy su texto, ¿cómo estás?" Words
= [ "Su", "son"]
El resultado debe ser el índice de "su" (10)
El equivalente más simple de su ciclo for es
int getIndexOfFirstFound(String text, String[] words) {
return Arrays.stream(words)
.mapToInt(text::indexOf)
.filter(i -> i >= 0)
.findFirst()
.orElse(-1);
}