Antworten:
Diese?
str = str.replace(/\s/g, '');
Beispiel
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Update: Basierend auf dieser Frage :
str = str.replace(/\s+/g, '');
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" und g
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.
.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 ...
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
Zwei Möglichkeiten, dies zu tun!
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 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 die split-join
Lösung. Ändern zu
\s
oder Hinzufügen +
oder i
zu Regexp verlangsamt die Verarbeitung.
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
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 verwendet textDomNode.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, '')
way faster
. lief den Test und es ist nur 2,19% schneller, auf meinem Firefox 61.
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
or
var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");
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 .
Regex + Ersetzen ()
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.
let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
Split () + Join ()
Die Verwendung von Split + Join ermöglicht eine weitere verkettete Manipulation der Zeichenfolge.
let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
" ahm ed ".split('').filter(e => e.trim().length).join('')