Как удалить из всех строк символы. ,!? " ': ” “, если в таких строках есть блеклист слово?

Как удалить из всех строк символы . , ! ? " ' : ” “ , если в таких строках есть блеклист слово?

Блеклист слова в переменной [[BLACK_LIST]] :
красной
печали


Список символов для удаления в переменной [[SYMBOLS]] :
. , ! ? " ' : ” “

Исходный текст (пример) в переменной [[TEXT]] :
Ах, я вспоминаю ясно, был тогда декабрь ненастный, 
И от каждой вспышки красной тень скользила на ковер.
Ждал я дня из мрачной дали, тщетно ждал, чтоб книги дали
Облегченье от печали по утраченной Линор, 
По святой, что там, в Эдеме ангелы зовут Линор,
Безыменной здесь с тех пор.


Чтоб осталось так в переменой [[TEXT]] (удалил в 2ой и в 4ой строке) :

Ах, я вспоминаю ясно, был тогда декабрь ненастный, 
И от каждой вспышки красной тень скользила на ковер
Ждал я дня из мрачной дали, тщетно ждал, чтоб книги дали
Облегченье от печали по утраченной Линор
По святой, что там, в Эдеме ангелы зовут Линор,
Безыменной здесь с тех пор.


Я писал этот JS-код для удаления всей строки если в ней есть блеклист слово, но код удаляет всю строку, а мне нужно удалить только символы . , ! ? " ' : ” “ из строк в которых содержаться блеклист слова (без удаления самой строки):

[[TEXT]] = [[TEXT]].filter(function(line){
  return [[BLACK_LIST]].every(function(forbiddenWord) {
    return line.toLowerCase().indexOf(forbiddenWord.toLowerCase()) === -1;
  });
});
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
@VadimFilimonov
const BLACK_LIST = ['красной', 'печали'];

const TEXT = `
  Ах, я вспоминаю ясно, был тогда декабрь ненастный, 
  И от каждой вспышки красной тень скользила на ковер.
  Ждал я дня из мрачной дали, тщетно ждал, чтоб книги дали
  Облегченье от печали по утраченной Линор, 
  По святой, что там, в Эдеме ангелы зовут Линор,
  Безыменной здесь с тех пор.
`;

const rows = TEXT.split('\n');
const normalizedRows = rows.map(row => {
  const shouldRemovePunctuationMarks = BLACK_LIST.some(forbiddenWord => {
    return row.includes(forbiddenWord);
  });

  if (shouldRemovePunctuationMarks) {
    const rowWithoutPunctuationMarks = row.replace(/[.,!?':”]/gi, '');
    return rowWithoutPunctuationMarks;
  }

  return row;
});
const normalizedText = normalizedRows.join('\n');

console.log(normalizedText);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы