Wie entferne ich Leerzeichen in einer Zeichenfolge? Zum Beispiel:
Eingang:
'/var/www/site/Brand new document.docx'
Ausgabe:
'/var/www/site/Brandnewdocument.docx'
javascript
text
JLuiz
quelle
quelle
" ahm ed ".split('').filter(e => e.trim().length).join('')
Antworten:
Diese?
Beispiel
Update: Basierend auf dieser Frage :
ist eine bessere Lösung. Es erzeugt das gleiche Ergebnis, aber es macht es schneller.
Der Regex
\s
ist der reguläre Ausdruck für "Leerzeichen" undg
das "globale" Flag, was "Übereinstimmung ALL"\s
(Leerzeichen) bedeutet.Eine gute Erklärung dafür
+
finden Sie hier .Als Randnotiz können Sie den Inhalt zwischen den einfachen Anführungszeichen durch alles ersetzen, was Sie möchten, sodass Sie Leerzeichen durch eine andere Zeichenfolge ersetzen können.
quelle
.replace(/\s+/g, '')
sie öfter. Gibt es einen Unterschied zwischen dem und meiner Antwort?.replace(' ','')
das funktionieren würde. Sehr geschätzt!+
hat ) hat nur 60 Stimmen, wenn jemand ihn / sie auch gutschreiben.replace('/\s+/g', '')
Sie darauf, dass Sie Ihren regulären Ausdruck nicht versehentlich zitieren, z. B. weil er versucht, diese wörtliche Zeichenfolge zu finden. Dies stolperte mich vor ...Zwei Möglichkeiten, dies zu tun!
quelle
KURZES und SCHNELLSTES :
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 Saiten
Kurze Zeichenfolge ähnlich den Beispielen aus der OP-Frage
Die schnellste Lösung für alle Browser ist
/ /g
(regexp1a) - Chrome 17.7M (Betrieb / Sek.), Safari 10.1M, Firefox 8.8M. Das langsamste für alle Browser war diesplit-join
Lösung. Ändernzu
\s
oder Hinzufügen+
oderi
zu Regexp verlangsamt die Verarbeitung.Lange Saiten
Für Zeichenfolgen mit ca. 3 Millionen Zeichen sind die Ergebnisse:
Sie können es auf Ihrem Computer ausführen: https://jsperf.com/remove-string-spaces/1
quelle
Folgende Antwort von @rsplak: Tatsächlich ist die Verwendung von Split / Join schneller als die Verwendung von regulärem Ausdruck. Sehen Sie sich die Leistung Testfall
Damit
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 Zeit wichtig ist, z. B. bei Textanalysatoren, insbesondere bei der Interaktion mit Benutzern, ist dies wichtig.
Behandelt andererseits eine
\s+
größere Vielfalt von Leerzeichen. Unter mit\n
und\t
stimmt es auch mit dem\u00a0
Zeichen überein , und genau das
wird beim Abrufen von Text verwendettextDomNode.nodeValue
.Ich denke, dass die Schlussfolgerung hier wie folgt gezogen werden kann: Wenn Sie nur Leerzeichen ersetzen müssen
' '
, verwenden Sie split / join. Wenn es verschiedene Symbole der Symbolklasse geben kann - verwenden Siereplace(/\s+/g, '')
quelle
way faster
. lief den Test und es ist nur 2,19% schneller, auf meinem Firefox 61.Klicken Sie hier für ein Arbeitsbeispiel
quelle
Hinweis: Obwohl Sie zum Entfernen von Leerzeichen 'g' oder 'gi' verwenden, verhalten sich beide gleich.
Wenn wir in der Ersetzungsfunktion 'g' verwenden, wird die genaue Übereinstimmung überprüft. Wenn wir jedoch 'gi' verwenden, wird die Groß- und Kleinschreibung ignoriert.
Als Referenz klicken Sie hier .
quelle
Obwohl Regex langsamer sein kann, manipuliert der Entwickler in vielen Anwendungsfällen nur wenige Zeichenfolgen gleichzeitig, sodass die Berücksichtigung der Geschwindigkeit keine Rolle spielt. Obwohl / / schneller als / \ s / ist, erklärt das '\ s', was einem anderen Entwickler vielleicht klarer vor sich geht.
Die Verwendung von Split + Join ermöglicht eine weitere verkettete Manipulation der Zeichenfolge.
quelle