Wie entfernt man Leerzeichen in einer Zeichenkette? Zum Beispiel:
Eingabe:
'/var/www/site/Brand new document.docx'
Ausgabe:
'/var/www/site/Brandnewdocument.docx'
Wie entfernt man Leerzeichen in einer Zeichenkette? Zum Beispiel:
Eingabe:
'/var/www/site/Brand new document.docx'
Ausgabe:
'/var/www/site/Brandnewdocument.docx'
Das hier?
str = str.replace(/\s/g, '');
Ejemplo
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Aktualisierung: Basierend auf diese Frage , dies:
str = str.replace(/\s+/g, '');
ist eine bessere Lösung. Sie führt zu demselben Ergebnis, aber schneller.
Der Regex
\s
ist die Regex für "Leerzeichen", und g
ist das "globale" Flag, d.h. es gilt für ALLE \s
(Whitespaces).
Eine gute Erklärung für +
kann gefunden werden aquí .
Nebenbei bemerkt können Sie den Inhalt zwischen den einfachen Anführungszeichen durch eine beliebige Zeichenkette ersetzen, d. h. Sie können Leerzeichen durch eine beliebige andere Zeichenkette ersetzen.
KÜRZEST und SCHNELLST : str.replace(/ /g, '');
Benchmark:
Hier meine Ergebnisse - (2018.07.13) MacOs High Sierra 10.13.3 auf Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit) ):
Kurze Zeichenfolge ähnlich den Beispielen aus der OP-Frage
Die schnellste Lösung auf allen Browsern ist / /g
(regexp1a) - Chrome 17.7M (Operation/Sek), Safari 10.1M, Firefox 8.8M. Am langsamsten war bei allen Browsern split-join
Lösung. Ändern Sie a \s
oder hinzufügen +
o i
zu regexp verlangsamt die Verarbeitung.
Für eine Zeichenkette mit ca. 3 Millionen Zeichen ergibt sich folgendes Bild:
Sie können es auf Ihrem Rechner ausführen: https://jsperf.com/remove-string-spaces/1
Nach der Antwort von @rsplak: Tatsächlich ist die Verwendung von Split/Join schneller als die Verwendung von Regexp. Siehe die Leistung Testfall
Also
var result = text.split(' ').join('')
arbeitet schneller als
var result = text.replace(/\s+/g, '')
Bei kleinen Texten ist dies nicht relevant, aber in Fällen, in denen die Zeit wichtig ist, z. B. bei Textanalysten, insbesondere bei der Interaktion mit Benutzern, ist dies von Bedeutung.
Andererseits, \s+
verarbeitet eine größere Vielfalt von Leerzeichen. Unter mit \n
y \t
entspricht sie auch \u00a0
Charakter, und das ist es, was
eingeschaltet ist, wird beim Abrufen von Text mit textDomNode.nodeValue
.
Ich denke also, dass die Schlussfolgerung hier wie folgt lauten kann: Wenn Sie nur die Räume ' '
verwenden Sie split/join. Wenn es verschiedene Symbole von Symbolklasse - Verwendung replace(/\s+/g, '')
Sie verwenden auch eine der neuesten String-Methoden von JS: replaceAll
'/var/www/site/Brand new document.docx'.replaceAll(' ', '');
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.