Ce's curate și eficiente de punere în aplicare JavaScript să se dezbrace de conducere și la sfârșit spații dintr-un șir?
De exemplu:
" dog"
"dog "
" dog "
" dog "
toate transformat în
"dog"
Utilizați acest:
if(typeof(String.prototype.trim) === "undefined")
{
String.prototype.trim = function()
{
return String(this).replace(/^\s+|\s+$/g, '');
};
}
Funcția de ajustare va fi acum disponibil ca o primă clasă de funcția pe siruri de caractere. De exemplu:
" dog".trim() === "dog" //true
EDIT: a Luat-J-P's sugestia de a combina regex modele intr-unul singur. Adăugat, de asemenea, global modificator pe Christoph's sugestie.
A luat Matei Crumley's o idee despre sniffing pe funcția trim înainte de a reface. Acest lucru se face în cazul în care versiunea de JavaScript folosit pe partea de client este mult mai recentă și, prin urmare, are propriile sale, nativ funcția trim.
Pentru jquery utilizatori, cum despre $.trim(s)
Gumbo remarcat deja acest lucru într-un comentariu, dar această poartă repetarea ca un răspuns: `trim () metoda a fost adăugat în JavaScript 1.8.1 și este susținută de toate browserele moderne (Firefox 3.5+, IE 9, Chrome 10, Opera 5.x), deși IE 8 și mai în vârstă nu-l suport. Utilizare este simplu:
" foo\n\t ".trim() => "foo"
Vezi de asemenea și:
O mai bună polyfill din MDN care acceptă eliminarea de BOM și NBSP:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
Bear în vedere faptul că modificarea built-in prototipuri vine cu un hit de performanță (din cauza motorului JS salvarea pe un număr de execuție optimizări), și în performanță situații critice poate fi necesar să ia în considerare alternative de definire a myTrimFunction(string)
în loc. Acestea fiind spuse, dacă vizează o mai veche de mediu fără nativ .trim()
sprijin, vă sunt susceptibile de a fi mai importante probleme de performanță să se ocupe cu.
Steven Levithan a scris odată despre cum să pună în aplicare un mai Repede JavaScript Trim. Este cu siguranta merita o privire.
Daca're deja folosind jQuery, atunci poate doriți să se uite la jQuery.trim()
, care este deja prevăzută cu jQuery.
Dacă, mai degrabă decât scrierea de cod nou să tăiați un șir,'re în căutarea la codul existent, care solicită "benzi()" și vă întrebați la ce e't de lucru, ați putea dori pentru a verifica dacă acesta încearcă să includ ceva de genul prototypejs cadru, și asigurați-vă că-l's, de fapt, obtinerea încărcat. Acest cadru se adaugă o fâșie funcție pentru toate obiectele String, dar daca de exemplu ai actualizat-o și paginile web sunt încă referindu-se la vechi .fișier js-l'll, desigur, nu funcționează.