Ich versuche einen Weg zu finden, um Leerzeichen vom Anfang und Ende der Titelzeichenfolge zu kürzen. Ich habe das benutzt, aber es scheint nicht zu funktionieren:
title = title.replace(/(^[\s]+|[\s]+$)/g, '');
Irgendwelche Ideen?
javascript
regex
James Jeffery
quelle
quelle
.trim
wurde jetzt eingebaut, daher ist dies die Antwort für moderne Browser: stackoverflow.com/a/3000900/29182function trim11 (str) { str = str.replace(/^\s+/, ''); for (var i = str.length - 1; i >= 0; i--) { if (/\S/.test(str.charAt(i))) { str = str.substring(0, i + 1); break; } } return str; }
Antworten:
Hinweis: Ab 2015 alle gängigen Browser (einschließlich IE> = 9) String.prototype.trim () . Dies bedeutet, dass für die meisten Anwendungsfälle das einfache Tun
str.trim()
der beste Weg ist, um das zu erreichen, was die Frage stellt.Steven Levithan analysierte viele verschiedene Implementierungen von
trim
Javascript in Bezug auf die Leistung.Seine Empfehlung lautet:
für "Allzweckimplementierung, die schnell browserübergreifend ist" und
"Wenn Sie lange Zeichenfolgen in allen Browsern außergewöhnlich schnell verarbeiten möchten".
Verweise
quelle
String.prototype.trim = String.prototype.trim || function trim() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };
/^\s\s*/
und nicht diese/^\s*/
trim1
undtrim11
?Wenn die Verwendung von jQuery eine Option ist:
oder einfach:
quelle
Wie @ChaosPandion erwähnt, das
String.prototype.trim
hat Methode in die eingeführt ECMAScript 5th Edition Specification, einige Implementierungen diese Methode bereits enthalten, so dass der beste Weg , um die native Implementierung zu erkennen ist und erklärt es nur , wenn es nicht verfügbar ist:Dann können Sie einfach:
quelle
String.prototype.trim
keine Funktion ist, ist dies nicht dieString.prototype.trim
in der ECMAScript 5th Edition beschriebene Methode Spezifikation, die Spezifikation garantiert, dasstrim
es sich in ES5-Umgebungen um ein Funktionsobjekt handelt.throw { name: "UnlikelyPolyfillException", message: "Did someone really write a property on the String prototype named 'trim' that isn't a ECMA 5 compatible shim? Come on now, that's crazy." }
Ich weiß, dass dies ein alter Beitrag ist, dachte aber nur, ich würde unsere Lösung teilen. Auf der Suche nach kürzesten Code (nicht jeder nur lieben Terse regex), könnte man stattdessen verwenden:
Übrigens: Ich habe denselben Test über den oben angegebenen Blog durchgeführt. Blog.stevenlevithan.com - Schnelleres JavaScript-Trimmen und dieses Muster schlagen alle anderen HÄNDE nieder!
Mit IE8 wurde Test als Test13 hinzugefügt. Die Ergebnisse waren:
quelle
ECMAScript 5 unterstützt
trim
und dies wurde in Firefox implementiert.trimmen - MDC
quelle
Hier sollte dies alles tun, was Sie brauchen
quelle
Hier sind einige Methoden, die ich in der Vergangenheit verwendet habe, um Zeichenfolgen in js zu trimmen:
quelle
^[\s*]+
Spiele*
am Anfang des Strings, so dass Ihre Funktion trimmt"*** Foo"
zu"Foo"
.Hier ist mein aktueller Code, die 2. Zeile funktioniert, wenn ich die 3. Zeile kommentiere, aber nicht, wenn ich sie so lasse, wie sie ist.
quelle
Verwenden Sie einfach die
string.trim()
Methode. Es wird von allen gängigen Browsern unterstützt. Referenz hier: http://www.w3schools.com/jsref/jsref_trim_string.aspquelle
jQuery.trim ("Hallo, wie geht es dir?");
:) :)
quelle
Wenn das DOM vollständig geladen ist, können Sie dies allen Textfeldern hinzufügen. Ich hatte noch nie eine Situation, in der ich führenden oder nachfolgenden Platz einreichen musste, also hat es für mich funktioniert, die ganze Zeit weltweit zu arbeiten ...
quelle
blur
Tritt sie tatsächlich vor dem Senden auf, wenn ich mich in einem Feld befinde und die <kbd> Eingabe </ kbd> drücke, um ein Formular zu senden?Dies wird von JavaScript Architect / Guru Douglas Crockford vorgeschlagen.
Hinweis: Sie müssen "Methode" für Function.prototype definieren.
Alternative
Überwachung
In neueren Browsern ist die Trimmmethode standardmäßig enthalten. Sie müssen es also nicht explizit hinzufügen.
Die gängigen Browser Chrome, Firefox, Safari usw. unterstützen die Trimmmethode . Eingecheckt in Chrome 55.0.2883.95 (64-Bit), Firefox 51.0.1 (64-Bit), Safari 10.0 (12602.1.50.0.10).
quelle
quelle
ein rekursiver Versuch dafür
so anrufen:
Wenn Sie bestimmte Zeichen filtern möchten, können Sie im Grunde eine Listenzeichenfolge definieren:
quelle
' '
, aber die Frage ist , über weißen Raum im Allgemeinen, einschließlich"\n"
,"\t"
und andere nicht druckbare Zeichen , die von in regex abgestimmt sind/\s/
.