Замініть всі символи пробілу


136

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

Я намагався:

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


1
Що таке "X" і чому?
Мухаммед Шахзад

Як щодо 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.