Заменить все пробельные символы


136

Я хочу заменить все вхождения символов пробела (пробел, табуляция, новая строка) в JavaScript.
Как это сделать?

Я попытался:

str.replace(/ /gi, "X")


1
Что такое "Х" и почему?
Мухаммед Шахзад

А как насчет string.replace ('', "X");
Рамеш Раджендран

Ответы:


315

Вы хотите \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");

41
+1 за то, что вы запомнили, что replaceфункция не изменяется str, поэтому вы должны назначить ее обратно.
FishBasketGordo

1
В функции вы можете вернуть str.replace, поэтому вам не нужно назначать в этой области.
Стив К

Помните , для R , чтобы использовать perl = TRUE, какgsub(pattern = "[\\s]+", ..., perl = TRUE)
MS БЕРЕНДС

30

\sявляется метасимволом, который покрывает все пробелы Вам не нужно делать это без учета регистра - пробел не имеет регистра.

str.replace(/\s/g, "X")

19

Мы также можем использовать это, если мы хотим заменить все объединенные пробелы одним символом:

str.replace(/\s+/g,'X');

Смотрите это в действии здесь: https://regex101.com/r/d9d53G/1

объяснение

/ \s+/ Г

  • \s+соответствует любому символу пробела (равно [\r\n\t\f\v ])
  • + Квантификатор - сопоставляет от одного до неограниченного количества раз, столько раз, сколько возможно, отдавая при необходимости (жадный)

  • Глобальные флаги
    • g модификатор: g lobal. Все матчи (не возвращаются после первого матча)


4

Если вы используете

str.replace(/\s/g, "");

он заменяет все пробелы. Например:

var str = "hello my world";
str.replace(/\s/g, "") //the result will be "hellomyworld"

4

Попробуй это:

str.replace(/\s/g, "X")

Это не работает \s\n\tсовпадения: любой символ пробела, за которым следует символ новой строки, а затем табуляция.
Даниэль Кэссиди

3

Не / ги но / г

var fname = "My Family File.jpg"
fname = fname.replace(/ /g,"_");
console.log(fname);

дает

"My_Family_File.jpg"

1

На самом деле это сработало, но

просто попробуй это.

принять значение / \ s / g в строковую переменную, как

String a = /\s/g;

str = str.replaceAll(a,"X");

откуда ты взял replaceAll?
Ионель Лупу

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.