Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Tagliare la stringa in JavaScript?                                      25 risposte                          
  •     
    

Che cos'è un'implementazione JavaScript pulita ed efficiente per rimuovere spazi iniziali e finali da una stringa?

Ad esempio:

" cane "

" dog "

" cane "

" cane "

tutti vengono trasformati in

" cane "

È stato utile?

Soluzione

Usa questo:

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

La funzione di taglio sarà ora disponibile come funzione di prima classe sulle corde. Ad esempio:

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

EDIT : ha preso il suggerimento di J-P di combinare i pattern regex in uno. Aggiunto anche il modificatore globale per il suggerimento di Christoph.

Ha preso l'idea di Matthew Crumley di annusare la funzione di taglio prima di ricrearla. Questo viene fatto nel caso in cui la versione di JavaScript utilizzata sul client sia più recente e quindi abbia una propria funzione di trim nativa.

Altri suggerimenti

Per gli utenti jquery, che ne dici di $.trim(s)

Gumbo lo ha già notato in un commento, ma questo vale come risposta: il metodo trim () è stato aggiunto in JavaScript 1.8.1 ed è supportato da tutti i browser moderni (Firefox 3.5+, IE 9, Chrome 10, Safari 5.x), anche se IE 8 e precedenti non lo supportano. L'utilizzo è semplice:

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

Vedi anche:

Ecco la funzione che uso.

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}

Un polyfill migliore dal MDN che supporta la rimozione di BOM e NBSP :

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

Tieni presente che la modifica dei prototipi incorporati ha un impatto sulle prestazioni (a causa del salvataggio del motore JS su una serie di ottimizzazioni di runtime) e in situazioni critiche per le prestazioni potresti dover considerare l'alternativa della definizione di myTrimFunction (stringa) invece. Detto questo, se stai prendendo di mira un ambiente meno recente senza il supporto nativo .trim () , è probabile che tu abbia problemi di prestazioni più importanti da affrontare.

Steven Levithan ha scritto una volta su come implementare un Trim più veloce di JavaScript . Vale sicuramente la pena dare un'occhiata.

Se stai già utilizzando jQuery, potresti dare un'occhiata a jQuery .trim () che è già fornito con jQuery.

Se, anziché scrivere un nuovo codice per tagliare una stringa, stai osservando il codice esistente che chiama " strip () " e chiedendoti perché non funziona, potresti voler verificare se tenta di includere qualcosa come il framework prototypejs e assicurarti che venga effettivamente caricato.
Tale framework aggiunge una funzione strip a tutti gli oggetti String, ma se ad es. lo hai aggiornato e le tue pagine web fanno ancora riferimento al vecchio file .js che ovviamente non funzionerà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top