Top.Mail.Ru
Ответы

Java. Проверить содержит ли строка определенные подстроки

Есть стринговая переменная, как проверить есть ли в ней определенные слова, то есть хотя бы одно из нужного списка. К примеру есть "абв гджз" и есть список слов "ас" "дж" "вс". Должно вернуть тру, тк есть "абв гджз", а к примеру если б было слово "вг" то его не должно найти тк между буквами пробел. Как лучше проверять и в чем хранить список слов (будет около 30 слов).

По дате
По рейтингу
Аватар пользователя
Знаток
11лет

str.indexOf()

Аватар пользователя
Ученик
11лет

String s = "привет";
ArrayList arr = new ArrayList();
arr.add("ивиygnf");
arr.add("иве");
arr.add("при");
arr.add("вет");
int z=0;
while(z<arr.size()){
String s1 = arr.get(z);
String s2 = "";
char[] c1 = s1.toCharArray();
int j=c1.length;
char[] c = s.toCharArray();
for (int i = 0; i <= c.length - j; i++) {
if (c[i] == c1[0]) {
s2 = s.substring(i, i + j);
}

}
System.out.println(s2);
System.out.println(s1);
if (s2.equals(s1)) {
System.out.println("true");

}
else System.out.println("false");
z++;
}
}

}

Аватар пользователя
Мыслитель
11лет

пусть у тебя есть текст
String TEXT = "This is my small example string which I'm going to use.";

и есть у тебя набор слов которые ты ищешь:
String[] words = {"use", "for", "all"};

собери из слов регулярку:

String regex = ".*(";
for(String s : words) {
regex += s + "|";
}
regex += ")*.";

получится в данном случае что-то типа ".*(use|for|all|)*."

тогда вот это:
TEXT.matches(regex);
даст тебе true если хоть одно слово встретилось
или даст тебе false в противном случае...

Аватар пользователя
Мыслитель
11лет

это будет работать если слово внутри другого слова, те нужно найти "слово" а в троке так абвсловоабв ---тут оно должнонайти



Видео по теме