У меня есть следующий код в java. То, что я пытаюсь найти, - это слово sql внутри моей переменной, но я ввожу язык sql, и он говорит, что слово не найдено. Как я могу искать sql, даже если я ввожу язык sql переменной a? Я надеюсь, что вы можете мне помочь, спасибо
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);
}
}
Метод
String#indexOf
попытается найти полный текст того, что вы указываете в текстовой строке. Поскольку ваша строка имеет значение"sql"
, и вы ищете"lenguaje sql"
, она не найдет его, так как нет следов"lenguaje "
.То, что вы пытаетесь сделать, является своего рода вынужденным, и, возможно, вам не следует этого делать. С другой стороны, возможно, все, что вы хотите сделать, это посмотреть, могут ли какие-либо «слова» в вашей текстовой строке быть встроены в строку. Для этого можно использовать следующий алгоритм:
Согласно комментарию Мариано, если мы хотим оценить строку, удалив не только пробел, но и любой другой символ, который не является гласным или согласным, мы используем
\\W+
для разделения строки:Метод работает
indexOf
наоборот.Вы должны применить метод к строке, в которой хотите выполнить поиск, передав текст для поиска в качестве параметра.
Вы также можете использовать
contains
:Все остальные ответы — это самый быстрый способ узнать, является ли одна строка частью другой. Однако при поиске слов вам может потребоваться выполнение следующих условий:
Совпадение без учета регистра .
Нахождение
"palabra"
внутри"ejemplo de ¿PaLaBrA?"
.Совпадение со всем словом .
И что он НЕ считается
"la"
частью"dos palabras"
,но совпадает с ним
"(la primera)"
.Для этого мы будем использовать регулярное выражение с границами всего слова (
\b
) вокруг искомого слова. То есть ему не предшествуют и не следуют буквы, цифры или знак подчеркивания.Пример
Результат
demo en ideone.com
Таким образом, вы сможете подсчитать, сколько раз вторая строка появляется в первой:
Что вы должны сделать, это что-то вроде следующего.
Если мы хотим оценить строку, удалив не только пробелы, но и любые другие символы, не являющиеся гласными или согласными, мы используем \W+ для разделения строки:
С помощью функции contentEquals оценивается, что слово присутствует полностью, в то время как в contains проверяется, что по крайней мере один символ искомых запросов находится в String. Привет.