Как удалить из всех строк символы. ,! ? " ': ” “, если в таких строках есть блеклист
Как удалить из всех строк символы . , ! ? " ' : ” “ , если в таких строках есть блеклист слово?
Блеклист слова в переменной [[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;
});
});
|
mik888em,
<script>
let text = `Ах, я вспоминаю ясно, был тогда декабрь ненастный,
И от каждой вспышки красной тень скользила на ковер.
Ждал я дня из мрачной дали, тщетно ждал, чтоб книги дали
Облегченье от печали по утраченной Линор,
По святой, что там, в Эдеме ангелы зовут Линор,
Безыменной здесь с тех пор.
`;
let black_list = `красной
печали`;
let symbols = `. , ! ? " ' : ” “`;
let regStr = /.*\n/mg;
let regBlack_list = new RegExp(black_list.split(/\n/).join('|'), 'i');
let regSymbols = new RegExp(`[${symbols.replace(/\s+/g, '')}]`, 'g');
function replace(str) {
regBlack_list.lastIndex = 0;
return regBlack_list.test(str) ? str.replace(regSymbols, '') : str
}
text = text.replace(regStr, replace);
document.write(`<pre>${text}</pre>`)
</script>
|
а как немного доработать?
Привет, супер реализация, а как бы сделать так, чтобы в строке где есть слова из блек-листа удалялись только последние символы? а не все . , и прочее?
|
Цитата:
let regSymbols = new RegExp(`[${symbols.replace(/\s+/g, '')}](?=$|\n)`, 'g'); |
скрипт удаляет все знаки препинания в строке
По святой, что там, в Эдеме ангелы зовут Линор, вернет По святой что там в Эдеме ангелы зовут Линор а хотелось бы, что бы вот так По святой(, тут осталось) что там(, тут осталось) в Эдеме ангелы зовут Линор(, тут убрали) |
Volonter,
ответ выше, тестируйте |
Цитата:
let regSymbols = new RegExp(`[${symbols.replace(/\s+/g, '')}](?=$|\n)`, 'g'); это уже и есть ответ на вопрос)) |
| Часовой пояс GMT +3, время: 07:52. |