IndexOf () искать слово во фразе

У меня есть следующий код в java. То, что я стараюсь искать, является словом sql внутри моей переменной в, но я ввожу язык в компьютер sql и он выходит у меня, что слово не было найдено. Как я могу делать, чтобы искать sql, хотя он введет язык в компьютер sql переменной в? я надеюсь, что они могут помогать мне спасибо

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);
          }

        }
24
задан 12.05.2016, 00:23
5 ответов

Метод String#indexOf он будет стараться искать полный текст того, что ты покажешь внутри цепи текста. Как у твоей цепи текста есть стоимость "sql" и ты ищешь "lenguaje sql", он не будет находить это, так как нет никакого следа "lenguaje ".

То, что ты пробуешь сделать, так это обязательный способ и, может быть, ты не был бы должен делать это. С другой стороны, возможно, что что-нибудь в этом роде, что ты хотел бы сделать, состоит в том, чтобы искать, если какое-то из "слов" внутри твоей цепи текста может быть впитанным в цепи. Для этого, ты мог бы использовать следующий алгоритм:

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...
    }
}

Из-за комментария Относящегося к Богородице, если бы хотелось оценивать цепь перемещая не только место в мишени но также любой другой характер, который не гласная или согласный, мы используем \\W+ чтобы отделять цепь:

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...
    }
}
12
ответ дан 24.11.2019, 14:25

Функционирование метода indexOf он наоборот.

Ты должен применять метод к цепи, в которой ты хочешь искать, перемещая его как параметр текст будучи нужно искать который.

String a = "sql";
String texto = "lenguaje sql";
int intIndex = texto.indexOf(a);
10
ответ дан 24.11.2019, 14:25

Ты можешь tambiГ©n использовать contains:

String palabra = "sql";
String texto = "lenguaje sql";
boolean resultado = texto.contains(palabra);

if(resultado){
    System.out.println("palabra encontrada");
}else{
    System.out.println("palabra no encontrada");
}
8
ответ дан 24.11.2019, 14:25
  • 1
    Превосходный solució n. Когда это буква в особенности, которую ты ищешь, это достаточно. –  brujita 21.06.2017, 04:13

Все другие ответы - самый быстрый способ видеть, - часть ли другой цепь. Однако, искали слова, может быть, хочется выполнять следующие условия:

  • Совпадать игнорируя прописные буквы и строчные буквы.
    Находя "palabra" внутри "ejemplo de ¿PaLaBrA?".

  • Совпадать со всем словом.
    И что он не считался "la" как уедь "dos palabras",
    но что да совпал с "(la primera)".

Для этого, мы используем регулярное выражение, с пределами полного слова (\b) около искавшего слова. А именно, что не предшествовался ни последованная буквами, числами или низкой схемой.

Пример

import java.util.regex.*;
String aguja = "sql";             //palabra buscada
String pajar = "lenguaje SQL";    //texto

//escapar y agregar limites de palabra completa - case-insensitive
Pattern regex = Pattern.compile("\\b" + Pattern.quote(aguja) + "\\b", Pattern.CASE_INSENSITIVE);
Matcher match = regex.matcher(pajar);

//la palabra está en el texto??
if (match.find()) {  //si se quiere encontrar todas las ocurrencias: cambiar el if por while
    System.out.println("Encontrado: '" + match.group() 
                     + "' dentro de '" + pajar 
                     + "' en la posición " + match.start());
} else {
    System.out.println("'" + aguja + "' NO está dentro de '" + pajar);
}

Результат

Encontrado: 'SQL' dentro de 'lenguaje SQL' en la posición 9

demo в ideone.com

5
ответ дан 24.11.2019, 14:25

Если бы хотелось оценивать цепь перемещая не только место в мишени а tambiГ©n любой другой характер, который не гласная или согласный, мы используем \W +, чтобы отделять цепь:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    // TODO code application logic here
    String cadenaDondeBuscar = "sql";
    String loQueQuieroBuscar = sc.nextLine();
    String[] palabras = loQueQuieroBuscar.split("\\W+"); 

    for (String palabra : palabras) {
        if (cadenaDondeBuscar.contentEquals(palabra)) {
            System.out.println("Encontrado");
            //aquí tu lógica en caso que se haya encontrado...
        }
    }
}

С нею funciГіn contentEquals evalГєa, что estГ© слово полностью, в то время как в contains он санкционирует, что по крайней мере характер заказов, который нужно искать estГ© в String. Привет.

0
ответ дан 24.11.2019, 14:25