Поиск слов в текстовом файле с помощью Java
Как в java найти несколько слов из txt документа и вывести их в консоль? Прежде считывал одно слово так:
public class FraziologizmLoad {
private static final String PATH = "./lib/fralogizm.txt";
public String line;
public String getStr;
public void adf(String text) throws IOException {
String searchWord = "Биться";
FileInputStream fis = new FileInputStream(new File(PATH));
byte[] content = new byte[fis.available()];
fis.read(content);
fis.close();
String[] lines = new String(content, "Cp1251").split("\n");
int i = 1;
for (String line : lines) {
String[] words = line.split(" ");
for (String word : words) {
if (word.equalsIgnoreCase(searchWord)) {
FileInputStream fs= new FileInputStream(PATH);
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
for(int i2 = 0; i2 < i-1; ++i2)
br.readLine();
String str = new String (br.readLine());
aa(str);
System.out.println(str);
}
}
i++;
}
}
часть txt файла:
Игра (не) стоит свеч — выгода от предприятия (не) превышает затраты на него же.
Игра в одни ворота — ситуация, в которой одна сторона получает все плюсы, вторая же несет все проблемы.
Играть в бирюльки — заниматься малозначимым делом.
Играть в кошки-мышки — соревноваться с заведомо неравными партнерами.
Ответы (1 шт):
Автор решения: Константин
→ Ссылка
Примерный вариант для случая, когда нужно совпадение всех слов:
List<String> searchWords = new ArrayList<>();
searchWords.add("Биться");
searchWords.add("головой");
FileInputStream fis = new FileInputStream(new File(PATH));
byte[] content = new byte[fis.available()];
fis.read(content);
fis.close();
String[] lines = new String(content, "Cp1251").split("\n");
for (String line : lines) {
String[] words = line.split(" ");
if (searchWords.stream().allMatch(sW -> Arrays.stream(words).anyMatch(w -> w.equalsIgnoreCase(sW)))) {
aa(str);
System.out.println(line);
}
}
Не понятно что тут за метод "aa", но оставил его...
Если достаточно совпадения одного из слов, то allMatch можно заменить на anyMatch