Удаление знаков препинания из строк? - PullRequest
0 голосов
/ 03 августа 2020

Я работаю над функцией палиндрома и наткнулся на формулу, которая удаляет знаки препинания из строк.


var punctuation = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/g;
var spaceRE = /\s+/g;
var str = "randomstringwith*&^%"
var testStr = str.replace(punctuation, '').replace(spaceRE, '')
document.write(testStr);

Мой вопрос в том, что если я удалю .replace(spaceRE, ''), в результате ничего не изменится . Что-то мне не хватает или на этой формуле есть лишний код? также меня немного смущает использование str.replace(punctuation,'');

punctuation представляет любые символы, отличные от букв / цифр, а '' заменяет их пустой строкой, правильно? Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

В ситуациях, подобных вашей, вы должны спросить себя, что проще:

  • Создайте REGEXP, который блокирует определенные символы
  • Создайте REGEXP, который разрешает определенные символы

Выбор, который вы выбираете, должен зависеть от того, какой из них требует меньше работы и быть более надежным.

Написание шаблона, блокирующего все символы, зависит от вашего запоминания все возможные символы - не только знаки препинания, но и образцы эмодзи, математические символы и т. д.

Если все, что вам нужно, это разрешить только цифры и буквы, вы можете сделать: 1020 * / - это псевдоним для символов, отличных от буквенно-цифровых c. Единственное предостережение: буквенно-цифровые символы c включают символы подчеркивания, поэтому, если вы хотите заблокировать и их:

str.replace(/\W|_/g, '');
0 голосов
/ 03 августа 2020

Оказывается, var spaceRE = /\s+/g; удаляет все пробелы из строк, а punctuation удаляет знаки препинания. При одновременной замене обеих строк на пустые строки получается строка без знаков препинания и пробелов и сохраняется в testStr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...