Ersetzen Sie alle Leerzeichen

136

Ich möchte alle Vorkommen von Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch) in JavaScript ersetzen.
Wie geht das?

Ich habe es versucht:

str.replace(/ /gi, "X")
Sourav
quelle
1
Was ist "X" und warum?
Muhammad Shahzad
Was ist mit string.replace ('', "X");
Ramesh Rajendran

Antworten:

315

Sie wollen \s

Entspricht einem einzelnen Leerzeichen, einschließlich Leerzeichen, Tabulator, Formularvorschub und Zeilenvorschub.

Gleichwertig

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

in Firefox und [ \f\n\r\t\v]im IE .


str = str.replace(/\s/g, "X");
Alex K.
quelle
41
+1 für das Erinnern daran, zu zeigen, dass sich die replaceFunktion nicht ändert str, sodass Sie sie zurückweisen müssen.
FishBasketGordo
1
In einer Funktion können Sie str.replace zurückgeben, sodass Sie in diesem Bereich keine Zuweisung vornehmen müssen.
Steve K
Denken Sie daran, für R zu verwenden perl = TRUE, wiegsub(pattern = "[\\s]+", ..., perl = TRUE)
MS Berends
30

\sist ein Metazeichen, das alle Leerzeichen abdeckt. Sie müssen nicht zwischen Groß- und Kleinschreibung unterscheiden - Leerzeichen haben keine Groß- und Kleinschreibung.

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

Wir können dies auch verwenden, wenn wir alle mehrfach verbundenen Leerzeichen mit einem einzigen Zeichen ändern möchten:

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

Sehen Sie es hier in Aktion: https://regex101.com/r/d9d53G/1

Erläuterung

/ \s+/ G

  • \s+Entspricht einem beliebigen Leerzeichen (gleich [\r\n\t\f\v ])
  • + Quantifizierer - Stimmt so oft wie möglich zwischen einer und einer unbegrenzten Anzahl überein und gibt nach Bedarf etwas zurück (gierig)

  • Globale Musterflags
    • g Modifikator: g lobal. Alle Spiele (nicht nach dem ersten Spiel zurückkehren)
Milos Stankovic
quelle
8

Hast du das versucht \s?

str.replace(/\s/g, "X");
Michael Berkowski
quelle
4

Wenn du benutzt

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

Es ersetzt alle Leerzeichen. Beispielsweise:

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

Versuche dies:

str.replace(/\s/g, "X")
Headshota
quelle
Das geht nicht \s\n\tÜbereinstimmungen: Beliebiges Leerzeichen, gefolgt von einer neuen Zeile, gefolgt von einer Registerkarte.
Daniel Cassidy
3

Nicht / gi aber / g

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

gibt

"My_Family_File.jpg"
jimver04
quelle
1

Eigentlich hat es aber geklappt

versuchen Sie es einfach.

Nehmen Sie den Wert / \ s / g in eine Zeichenfolgenvariable wie

String a = /\s/g;

str = str.replaceAll(a,"X");
Siten
quelle
Woher kommst du replaceAll?
Ionel Lupu