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.

Hernán Eche
quelle
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!

Henrik Andersson
quelle
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
8

Wahrscheinlich, weil Sie vergessen haben, die Lösung in der akzeptierten Antwort zu implementieren . Das ist der Code, der trim()Arbeit macht .

aktualisieren

Diese Antwort gilt nur für ältere Browser. Neuere Browser unterstützen offenbar trim()nativ.

John Conde
quelle
2
Nicht unbedingt, einige Browser haben es eingebaut .:-P
Rocket Hazmat
1
Seine Gegenwart in den meisten modernen Browers jetzt -> kangax.github.com/es5-compat-table
Manse
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

JSON C11
quelle
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

ArlanG
quelle
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