Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2022, 22:53
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 142

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

Блеклист слова в переменной [[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;
  });
});
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2022, 23:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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>
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2022, 13:14
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 84

а как немного доработать?
Привет, супер реализация, а как бы сделать так, чтобы в строке где есть слова из блек-листа удалялись только последние символы? а не все . , и прочее?
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2022, 13:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Volonter
удалялись только последние символы?
???
let regSymbols = new RegExp(`[${symbols.replace(/\s+/g, '')}](?=$|\n)`, 'g');
Ответить с цитированием
  #5 (permalink)  
Старый 09.05.2022, 13:33
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 84

скрипт удаляет все знаки препинания в строке
По святой, что там, в Эдеме ангелы зовут Линор,
вернет
По святой что там в Эдеме ангелы зовут Линор
а хотелось бы, что бы вот так
По святой(, тут осталось) что там(, тут осталось) в Эдеме ангелы зовут Линор(, тут убрали)

Последний раз редактировалось Volonter, 09.05.2022 в 13:36.
Ответить с цитированием
  #6 (permalink)  
Старый 09.05.2022, 13:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Volonter,
ответ выше, тестируйте
Ответить с цитированием
  #7 (permalink)  
Старый 09.05.2022, 13:47
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 84

Сообщение от рони Посмотреть сообщение
Volonter,
ответ выше, тестируйте
супер, спасибо! я просто не сразу понял, что
let regSymbols = new RegExp(`[${symbols.replace(/\s+/g, '')}](?=$|\n)`, 'g');
это уже и есть ответ на вопрос))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить что все слова есть в предложении, если количество слов не известно? sovsem-nub Элементы интерфейса 14 28.06.2020 20:05
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как удалить класс всех дочерних элементов? Jeremen Events/DOM/Window 8 01.09.2012 20:43
как записать <form> с отправкой .. если есть уже <form> с другим обработчиком Arfey Серверные языки и технологии 9 01.06.2010 16:31
можно ли, если да то как удалить строки из таблицы Avaria Я не знаю javascript 3 11.06.2009 03:03