Удаление совпадающих слов одного файла из другого файла

Кот

Существует следующая проблема. Есть 2 текстовых файла. В первом файле находится текст, а во втором файле перечислены определенные слова, которые могут находится в тексте первого файла. Нужно удалить совпадающие слова второго файла из текста первого файла. Подскажите пожалуйста, как это можно реализовать?

1 ответ

Кот

Читаем построчно первый файл. Строки например в str. Второй читаем в Set wordSet

for (String word : wordSet) {
  word = word.toLowerCase();  //привожу к нижнему регистру
  int i = str.toLowerCase().indexOf(word);
  if (i == 0) str = str.substring(word.length()); //Удаляем в начале строки, при условии, что это само слово, а не начало более длинного.
  Pattern p = Pattern.compile("[^А-ЯЁа-яё0-9A-Za-z]" + word + "[^А-ЯЁа-яё0-9A-Za-z]");  //Исключаю нахождение слова внутри другого слова
  while (p.matcher(str.toLowerCase()).find()) {
    Matcher m = p.matcher(str.toLowerCase());
    m.find();
    str = str.substring(0, m.start() + 1) + str.substring(m.end() - 1);
  }
  i = str.toLowerCase().lastIndexOf(word);
  if (i == str.length() - word.length()) str = str.substring(0, i); //Удаляем в конце строки
}

В тексте использовал приведение к нижнему регистру. При этом не искажая исходный файл.

Возможно это можно оптимизировать. Буду рад комментариям как.

licensed under cc by-sa 3.0 with attribution.