Próbuję znaleźć sposób na przycięcie spacji od początku i końca ciągu tytułu. Używałem tego, ale wygląda na to, że nie działa:
title = title.replace(/(^[\s]+|[\s]+$)/g, '');
Jakieś pomysły?
javascript
regex
James Jeffery
źródło
źródło
.trim
teraz wbudowany, więc jest to odpowiedź dla nowoczesnych przeglądarek: 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; }
Odpowiedzi:
Uwaga: od 2015 roku wszystkie główne przeglądarki (w tym IE> = 9) obsługują metodę String.prototype.trim () . Oznacza to, że w większości przypadków po prostu robienie tego
str.trim()
jest najlepszym sposobem osiągnięcia tego, o co chodzi w pytaniu.Steven Levithan przeanalizował wiele różnych implementacji języka
trim
JavaScript pod kątem wydajności.Jego rekomendacja to:
dla „implementacji ogólnego przeznaczenia, która jest szybka w różnych przeglądarkach” oraz
„jeśli chcesz obsługiwać długie ciągi znaków wyjątkowo szybko we wszystkich przeglądarkach”.
Bibliografia
źródło
String.prototype.trim = String.prototype.trim || function trim() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };
/^\s\s*/
a nie to/^\s*/
trim1
itrim11
?Jeśli użycie jQuery jest opcją:
lub po prostu:
źródło
Jak wspomniał @ChaosPandion ,
String.prototype.trim
metoda została wprowadzona do specyfikacji ECMAScript 5th Edition , niektóre implementacje zawierają już tę metodę, więc najlepszym sposobem jest wykrycie natywnej implementacji i zadeklarowanie jej tylko wtedy, gdy nie jest dostępna:Następnie możesz po prostu:
źródło
String.prototype.trim
nie jest funkcją, to nie jest toString.prototype.trim
metoda opisana w ECMAScript 5th Edition Specyfikacja, specyfikacja gwarantuje, żetrim
jest to obiekt funkcji w środowiskach ES5.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." }
Wiem, że to stary post, ale pomyślałem, że udostępnię nasze rozwiązanie. W poszukiwaniu najkrótszego kodu (czy nie wszyscy po prostu kochają zwięzłe wyrażenie regularne), można zamiast tego użyć:
BTW: Przeprowadziłem ten sam test przez link udostępniony powyżej blog.stevenlevithan.com - Szybsze przycinanie JavaScript i ten wzorzec pokonał wszystkie inne RĘCE w dół!
Używając IE8, dodano test jako test13. Wyniki były następujące:
źródło
ECMAScript 5 obsługuje
trim
i zostało to zaimplementowane w przeglądarce Firefox.wykończenie - MDC
źródło
Tutaj powinno zrobić wszystko, czego potrzebujesz
źródło
Oto kilka metod, których używałem w przeszłości do przycinania ciągów w js:
źródło
^[\s*]+
pasuje*
na początku ciągu, więc funkcja jest przycinana"*** Foo"
do"Foo"
.Oto mój aktualny kod, druga linia działa, jeśli skomentuję trzecią linię, ale nie działa, jeśli zostawię ją tak, jak jest.
źródło
Po prostu użyj
string.trim()
metody. Jest obsługiwany przez wszystkie główne przeglądarki. Źródła tutaj: http://www.w3schools.com/jsref/jsref_trim_string.aspźródło
jQuery.trim ("cześć, jak się masz?");
:)
źródło
Gdy DOM jest w pełni załadowany, możesz dodać to do wszystkich pól tekstowych. Nigdy nie miałem sytuacji, w której musiałem podać początkową lub końcową spację, więc robienie tego przez cały czas na całym świecie zadziałało dla mnie ...
źródło
blur
faktycznie pojawia się przed przesłaniem, gdy jestem w polu i naciskam <kbd> enter </kbd>, aby wysłać formularz?To właśnie sugeruje JavaScript Architect / Guru Douglas Crockford.
Uwaga: musisz zdefiniować „metodę” dla Function.prototype.
Alternatywnie
Obserwacja
W najnowszych przeglądarkach metoda przycinania jest dołączona domyślnie. Nie musisz więc dodawać tego jawnie.
Główne przeglądarki Chrome, Firefox, Safari itp. Obsługują metodę przycinania . Sprawdzono w Chrome 55.0.2883.95 (64-bitowej), Firefox 51.0.1 (64-bitowej), Safari 10.0 (12602.1.50.0.10).
źródło
źródło
rekurencyjna próba tego
zadzwoń tak:
jeśli chcesz filtrować specyficzne znaki, możesz w zasadzie zdefiniować ciąg listy:
źródło
' '
, ale pytanie jest o białej przestrzeni w ogóle, w tym"\n"
,"\t"
a także innych znaków, które są dopasowane do druku w regex przez/\s/
.