Я хочу заменить все вхождения символов пробела (пробел, табуляция, новая строка) в JavaScript.
Как это сделать?
Я попытался:
str.replace(/ /gi, "X")
Я хочу заменить все вхождения символов пробела (пробел, табуляция, новая строка) в JavaScript.
Как это сделать?
Я попытался:
str.replace(/ /gi, "X")
Ответы:
Вы хотите \s
Соответствует одному пробелу, включая пробел, табуляцию, перевод формы, перевод строки.
Эквивалентно
[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
в Firefox и [ \f\n\r\t\v]
в IE .
str = str.replace(/\s/g, "X");
replace
функция не изменяется str
, поэтому вы должны назначить ее обратно.
perl = TRUE
, какgsub(pattern = "[\\s]+", ..., perl = TRUE)
Мы также можем использовать это, если мы хотим заменить все объединенные пробелы одним символом:
str.replace(/\s+/g,'X');
Смотрите это в действии здесь: https://regex101.com/r/d9d53G/1
объяснение
/
\s+
/ Г
\s+
соответствует любому символу пробела (равно [\r\n\t\f\v ]
)+
Квантификатор - сопоставляет от одного до неограниченного количества раз, столько раз, сколько возможно, отдавая при необходимости (жадный)
Вы пробовали \s
?
str.replace(/\s/g, "X");
Попробуй это:
str.replace(/\s/g, "X")
\s\n\t
совпадения: любой символ пробела, за которым следует символ новой строки, а затем табуляция.
На самом деле это сработало, но
просто попробуй это.
принять значение / \ s / g в строковую переменную, как
String a = /\s/g;
str = str.replaceAll(a,"X");
replaceAll
?
Я использовал метод "slugify" из underscore.string, и он работал как шарм:
https://github.com/epeli/underscore.string#slugifystring--string
Круто то, что вы можете просто импортировать этот метод, не нужно импортировать всю библиотеку.