Question

    

Cette question a déjà une réponse ici:

    
            
  •              Couper la chaîne en JavaScript?                                      25 réponses                          
  •     
    

Qu'est-ce qu'une implémentation JavaScript propre et efficace pour supprimer des espaces de début et de fin d'une chaîne?

Par exemple:

" chien "

"chien"

" chien "

" chien "

tous sont transformés en

"chien"

Était-ce utile?

La solution

Utilisez ceci:

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

La fonction de rognage sera désormais disponible en tant que fonction de première classe sur vos chaînes. Par exemple:

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

MODIFIER : suivez la suggestion de J-P de combiner les motifs de regex en un seul. A également ajouté le modificateur global selon la suggestion de Christoph.

A compris l’idée de Matthew Crumley de renifler la fonction de rognage avant de la recréer. Ceci est fait au cas où la version de JavaScript utilisée sur le client est plus récente et possède donc sa propre fonction de trim native.

Autres conseils

Pour les utilisateurs de jQuery, que diriez-vous de $. trim (s)

Gumbo a déjà noté cela dans un commentaire, mais cela mérite d'être répété: la méthode trim () a été ajoutée dans JavaScript 1.8.1 et est prise en charge par tous les navigateurs modernes (Firefox 3.5+, IE 9, Chrome 10, Safari 5.x), même si IE 8 et les versions antérieures ne le prennent pas en charge. L'utilisation est simple:

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

Voir aussi:

Voici la fonction que j'utilise.

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

Un meilleur polyfill de MDN qui prend en charge la suppression de BOM et NBSP :

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

N'oubliez pas que la modification des prototypes intégrés entraîne des pertes de performances (en raison du moteur JS exploitant plusieurs optimisations d'exécution), et dans les situations critiques en termes de performances, vous devrez peut-être envisager la définition de myTrimFunction. (string) à la place. Cela dit, si vous ciblez un ancien environnement sans la prise en charge native de .trim () , vous devrez probablement faire face à des problèmes de performances plus importants.

Steven Levithan a déjà écrit sur la mise en œuvre d'un blog Trim JavaScript plus rapide . Cela vaut vraiment le coup d'oeil.

Si vous utilisez déjà jQuery, vous pouvez consulter jQuery .trim () déjà fourni avec jQuery.

Si, plutôt que d'écrire du nouveau code pour couper une chaîne, vous regardez du code existant qui appelle "strip ()". et en vous demandant pourquoi cela ne fonctionne pas, vous voudrez peut-être vérifier s'il tente d'inclure quelque chose comme le framework prototypejs, et assurez-vous qu'il est effectivement chargé.
Ce framework ajoute une fonction strip à tous les objets String, mais si par ex. vous l'avez mis à niveau et vos pages Web font toujours référence à l'ancien fichier .js, cela ne fonctionnera bien sûr pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top