IndexOf() buscar palabra en una frase

publicado por: Anonymous

Tengo el siguiente codigo en java. Lo que trato de buscar es la palabra sql dentro de mi variable a pero yo ingreso lenguaje sql y me sale que la palabra no ha sido encontrada. Como puedo hacer para buscar sql aunque ingrese lenguaje sql de la variable a? espero me puedan ayudar gracias

public static void main(String[] args) {
            // TODO code application logic here
            String a="sql";
            int intIndex = a.indexOf("lenguaje sql");
          if(intIndex == - 1){
             System.out.println("palabra encontrada");
          }else{
             System.out.println("palabra no encontrada"
             + intIndex);
          }

        }

solución

El método String#indexOf tratará de buscar el texto completo de lo que indiques dentro de la cadena de texto. Como tu cadena de texto tiene el valor "sql" y estás buscando "lenguaje sql", no lo va a encontrar puesto que no hay ningún rastro de "lenguaje ".

Lo que intentas hacer es medio forzoso y quizás no deberías hacerlo. Por otro lado, puede que lo que sea que quieras hacer es buscar si alguna de las “palabras” dentro de tu cadena de texto puede estar embebida en la cadena. Para ello, podrías utilizar el siguiente algoritmo:

String cadenaDondeBuscar = "sql";
String loQueQuieroBuscar = "lenguaje sql";
String[] palabras = loQueQuieroBuscar.split("\s+");
for (String palabra : palabras) {
    if (cadenaDondeBuscar.contains(palabra)) {
        System.out.println("Encontrado");
        //aquí tu lógica en caso que se haya encontrado...
    }
}

Por el comentario de Mariano, si se quisiera evaluar la cadena removiendo no solo los espacios en blanco sino también cualquier otro caracter que no sea una vocal o consonante, usamos \W+ para separar la cadena:

String cadenaDondeBuscar = "sql";
String loQueQuieroBuscar = "lenguaje sql";
String[] palabras = loQueQuieroBuscar.split("\W+");
for (String palabra : palabras) {
    if (cadenaDondeBuscar.contains(palabra)) {
        System.out.println("Encontrado");
        //aquí tu lógica en caso que se haya encontrado...
    }
}
Respondido por: user227

Leave a Reply

Your email address will not be published. Required fields are marked *