Zastąp wszystkie białe znaki

136

Chcę zamienić wszystkie wystąpienia białych znaków (spacja, tabulacja, nowa linia) w JavaScript.
Jak to zrobić?

Próbowałem:

str.replace(/ /gi, "X")
Sourav
źródło
1
regular-expressions.info
Felix Kling
1
Co to jest „X” i dlaczego?
Muhammad Shahzad
A co z string.replace ('', "X");
Ramesh Rajendran

Odpowiedzi:

315

Chcesz \s

Dopasowuje pojedynczy znak odstępu, w tym spację, tabulator, wysuw strony, wysunięcie wiersza.

Równoważny

[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

w Firefoksie i [ \f\n\r\t\v]w IE .


str = str.replace(/\s/g, "X");
Alex K.
źródło
41
+1 za pamiętanie o pokazaniu, że replacefunkcja nie modyfikuje str, więc musisz ją przypisać z powrotem.
FishBasketGordo
1
W funkcji możesz zwrócić str.replace, więc nie musisz przypisywać jej w tym zakresie.
Steve K
Pamiętaj, aby użyć R perl = TRUE, jakgsub(pattern = "[\\s]+", ..., perl = TRUE)
MS Berends
30

\sto znak meta, który obejmuje wszystkie białe znaki. Nie musisz robić tego bez rozróżniania wielkości liter - białe znaki nie mają wielkości liter.

str.replace(/\s/g, "X")
Quentin
źródło
19

Możemy również użyć tego, jeśli chcemy zmienić wszystkie wiele połączonych spacji za pomocą jednego znaku:

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

Zobacz to w akcji tutaj: https://regex101.com/r/d9d53G/1

Wyjaśnienie

/ \s+/ g

  • \s+dopasowuje dowolny biały znak (równy [\r\n\t\f\v ])
  • + Kwantyfikator - dopasowuje od jednego do nieograniczonej liczby razy, tyle razy, ile to możliwe, dając w razie potrzeby (chciwy)

  • Globalne flagi wzorców
    • modyfikator g: g lobal. Wszystkie mecze (nie wracaj po pierwszym meczu)
Milos Stankovic
źródło
8

Czy próbowałeś \s?

str.replace(/\s/g, "X");
Michaela Berkowskiego
źródło
4

Jeśli użyjesz

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

zastępuje wszystkie białe spacje. Na przykład:

var str = "hello my world";
str.replace(/\s/g, "") //the result will be "hellomyworld"
GigiProve
źródło
4

Spróbuj tego:

str.replace(/\s/g, "X")
Headshota
źródło
To nie działa. \s\n\tdopasowania: dowolny biały znak, po którym następuje nowa linia i tabulacja.
Daniel Cassidy
3

Nie / gi, ale / g

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

daje

"My_Family_File.jpg"
jimver04
źródło
1

Właściwie to się udało, ale

po prostu spróbuj tego.

weź wartość / \ s / g do zmiennej łańcuchowej, takiej jak

String a = /\s/g;

str = str.replaceAll(a,"X");
Siten
źródło
skąd masz replaceAllod?
Ionel Lupu