String strip () dla JavaScript? [duplikat]

To pytanie ma już odpowiedź tutaj:

Jaka jest czysta i wydajna implementacja JavaScript, która Usuwa spacje prowadzące i końcowe z ciągu znaków?

Na przykład:

" dog"

"dog "

" dog "

" dog "

All get turned into

"dog"

Author: Boann, 2009-09-13

8 answers

Użyj tego:

if(typeof(String.prototype.trim) === "undefined")
{
    String.prototype.trim = function() 
    {
        return String(this).replace(/^\s+|\s+$/g, '');
    };
}

Funkcja trim będzie teraz dostępna jako funkcja pierwszej klasy na Twoich ciągach. Na przykład:

" dog".trim() === "dog" //true

EDIT : wziął sugestię J-P, aby połączyć wzory regex w jeden. Dodano również modyfikator globalny zgodnie z sugestią Christopha.

Wziął pomysł Matthew Crumleya o wąchaniu funkcji trim przed odtworzeniem jej. Odbywa się to w przypadku, gdy wersja JavaScript użyta na kliencie jest nowsza i dlatego ma własną, natywna funkcja trim.

 183
Author: David Andres,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-13 20:56:49

Dla użytkowników jquery, a może $.trim(s)

 135
Author: user638373,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-11 10:49:30

Gumbo już to zauważył w komentarzu, ale to powtarza się jako odpowiedź: metoda trim() została dodana w JavaScript 1.8.1 i jest obsługiwana przez wszystkie nowoczesne przeglądarki (Firefox 3.5+, IE 9, Chrome 10, Safari 5.x), chociaż IE 8 i starsze go nie obsługują. Użycie jest proste:

 "  foo\n\t  ".trim() => "foo"

Zobacz także:

 77
Author: jpatokal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-17 01:41:51

Oto funkcja, której używam.

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}
 11
Author: Mic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-13 16:08:14

Lepszy polyfill z MDN, który obsługuje usuwanie BOM i NBSP :

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

Należy pamiętać, że modyfikowanie wbudowanych prototypów wiąże się z hitem wydajności (ze względu na rezygnację silnika JS z wielu optymalizacji czasu pracy), a w sytuacjach krytycznych dla wydajności może być konieczne rozważenie alternatywy zdefiniowania myTrimFunction(string). Mając to na uwadze, jeśli kierujesz się na starsze środowisko bez natywnego wsparcia .trim(), prawdopodobnie masz więcej ważne kwestie związane z wydajnością.

 11
Author: Bardi Harborow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-14 16:22:42

Steven Levithan napisał kiedyś o tym, jak zaimplementować szybsze przycinanie JavaScript . Zdecydowanie warto to sprawdzić.

 7
Author: Gumbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-13 17:14:19

Jeśli już używasz jQuery, możesz chcieć rzucić okiem na jQuery.trim() który jest już dostarczany z jQuery.

 7
Author: Filip Dupanović,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 22:32:52

Jeśli zamiast pisać nowy kod do przycinania ciągu znaków, patrzysz na istniejący kod, który wywołuje "strip ()" i zastanawiasz się, dlaczego nie działa, możesz sprawdzić, czy próbuje on dołączyć coś takiego jak Framework prototypejs i upewnić się, że faktycznie jest ładowany.
Framework ten dodaje funkcję strip do wszystkich obiektów String, ale jeśli np. zaktualizowałeś ją i Twoje strony internetowe nadal odnoszą się do starej.plik js to oczywiście nie zadziała.

 5
Author: Eric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-16 16:34:38