Entfernen Sie Leerzeichen in einer Zeichenfolge in Javascript


100

Ich habe diese Frage zu Javascript Trim mit einer Regex-Antwort gelesen .

Dann erwarte ich, dass der Innenraum zwischen Hallo und Welt durch Trimmen entfernt wird .

function myFunction() {
    alert("Hello World ".trim());
}

BEARBEITET

Warum habe ich das erwartet?

Unsinn! Offensichtlich entfernt Trimmen keine inneren Räume!, Nur führende und nachfolgende, so funktioniert Trimmen, dann war dies eine sehr falsche Frage, entschuldige ich mich.


10
Trim entfernt Leerzeichen vom Anfang und Ende einer Zeichenfolge
Manse

3
Beim Trimmen werden Leerzeichen vor und nach einer Zeichenfolge entfernt. Hello Worldist bereits "getrimmt".
Rocket Hazmat

@limelights Um "HelloWorld" anstelle von "Hello World" zu zeigen
Hernán Eche

4
@void: Das ist kein "Trimmen", das ist ein anderes Problem.
Rocket Hazmat

Antworten:


236

Zum Entfernen von Leerzeichen verwenden

"hello world".replace(/\s/g, "");

Verwenden Sie für alle Leerzeichen den Vorschlag von Rocket in den Kommentaren unten!


136
Möglicherweise möchten Sie verwenden, .replace(/ /g, '')wenn mehr als ein Leerzeichen vorhanden ist.
Rocket Hazmat

@Rocket, das ist absolut wahr, habe noch keine aktualisierte Antwort! Vielen Dank! :)
Henrik Andersson

47
@Juhana: Wenn Sie auch andere Leerzeichen entfernen möchten, gehen Sie wie folgt vor : .replace(/\s/g, '').
Rocket Hazmat

12
@ RocketHazmat ja! die richtige Antwort! Dies könnte jedoch etwas effizienter sein: str.replace (/ \ s + / g, '')
jackocnr

3
@PitchiahNatarajan passt \sLeerzeichen, Tabulatoren und neue Zeilen an.
Rocket Hazmat


1

Sie können die Strings- Ersetzungsmethode mit einem regulären Ausdruck verwenden.

"Hello World ".replace(/ /g, "");

Die replace () -Methode gibt eine neue Zeichenfolge zurück, bei der einige oder alle Übereinstimmungen eines Musters durch eine Ersetzung ersetzt werden. Das Muster kann eine Zeichenfolge oder ein RegExp sein

RegExp

  • // - Übereinstimmende Leerzeichen für reguläre Ausdrücke

  • g - Globale Flagge; Finde alle Übereinstimmungen, anstatt nach dem ersten Spiel anzuhalten


1

Sie können verwenden

"Hello World ".replace(/\s+/g, '');

trim()Entfernt nur nachgestellte Leerzeichen in der Zeichenfolge (erste und letzte in der Kette). In diesem Fall ist dieser regExp schneller, da Sie ein oder mehrere Leerzeichen gleichzeitig entfernen können.

Wenn Sie die leere Ersatzzeichenfolge in '$' ändern, wird der Unterschied viel deutlicher:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // $Q$W$E$R$TY$

Leistungsvergleich - /\s+/gist schneller. Siehe hier: http://jsperf.com/s-vs-s


Die aktuell akzeptierte Antwort macht dasselbe. Bitte legen Sie einige relevante Tests vor, die darauf hinweisen, dass dies um mehr als Nanosekunden schneller ist als diese Antwort.
Heretic Monkey

@HereticMonkey Aktualisiert!
ArlanG
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.