Java. Проверить содержит ли строка определенные подстроки
Есть стринговая переменная, как проверить есть ли в ней определенные слова, то есть хотя бы одно из нужного списка. К примеру есть "абв гджз" и есть список слов "ас" "дж" "вс". Должно вернуть тру, тк есть "абв гджз", а к примеру если б было слово "вг" то его не должно найти тк между буквами пробел. Как лучше проверять и в чем хранить список слов (будет около 30 слов).
str.indexOf()
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++;
}
}
}
пусть у тебя есть текст
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 в противном случае...
это будет работать если слово внутри другого слова, те нужно найти "слово" а в троке так абвсловоабв ---тут оно должнонайти