1367 votes

Découper une chaîne de caractères en JavaScript ?

Comment couper une chaîne de caractères en JavaScript ? Autrement dit, comment supprimer tous les espaces du début et de la fin d'une chaîne en JavaScript ?

295 votes

Il est intéressant de mentionner que deux ans après que cette question ait été posée, String.trim() a été ajouté nativement dans JavaScript 1.8.1 / ECMAScript 5, supporté dans : Firefox 3.5+, Chrome/Safari 5+, IE9+ (en mode Standards uniquement !) voir la réponse de scunliffe : stackoverflow.com/a/8522376/8432

47 votes

String.trim() fonctionne également très bien dans Node.js.

47 votes

Pour pinailler : String.trim() la méthode de classe, n'existe pas dans ES5/Node.js ; à la place, String.prototype.trim() la méthode d'instance, existe. Utilisation : ' foo '.trim() pas String.trim(' foo ') .

941voto

Pradeep Kumar Mishra Points 6870

Tous les navigateurs depuis IE9+ ont trim() pour les chaînes de caractères :

" \n test \n ".trim(); // returns "test" here

Pour les navigateurs qui ne prennent pas en charge trim() vous pouvez utiliser ce polyfill à partir de MDN :

if (!String.prototype.trim) {
    (function() {
        // Make sure we trim BOM and NBSP
        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
        String.prototype.trim = function() {
            return this.replace(rtrim, '');
        };
    })();
}

Cela dit, si vous utilisez jQuery , $.trim(str) est également disponible et traite les cas indéfinis/nuls.


Regardez ça :

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

String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};

String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};

String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};

87 votes

Il convient de noter que dans jQuery, $.trim(str) est toujours disponible.

483voto

barneytron Points 5666

La garniture de jQuery est pratique si vous utilisez déjà ce cadre.

$.trim('  your string   ');

J'ai tendance à utiliser souvent jQuery, et il est donc naturel pour moi de couper les chaînes de caractères avec. Mais il est possible qu'il y ait un retour de bâton contre jQuery :)

1 votes

Cela ne coupe que les espaces blancs (nouvelle ligne) cela ne fonctionne pas comme php trim , où vous pouvez également couper les caractères.

1 votes

JQuery 3.5.0 a déprécié sa méthode de découpage.

166voto

scunliffe Points 30964

Bien qu'il y ait un tas de bonnes réponses ci-dessus, il faut noter que la String en JavaScript a un objet natif .trim() à partir de ECMAScript 5 . Ainsi, idéalement, toute tentative de prototypage de la méthode de compensation devrait d'abord vérifier si elle existe déjà.

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

Ajouté nativement dans : JavaScript 1.8.1 / ECMAScript 5

Ainsi soutenu dans :

Firefox : 3.5+

Safari : 5+

Internet Explorer : IE9+. (en mode standard uniquement !) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx

Chrome : 5+

Opéra : 10.5+

Tableau de support ECMAScript 5 : http://kangax.github.com/es5-compat-table/

129voto

Gumbo Points 279147

Il y a beaucoup de mises en œuvre qui peuvent être utilisés. Le plus évident semble être quelque chose comme ceci :

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

" foo bar ".trim();  // "foo bar"

47voto

Mark Davidson Points 2729

Version simple ici Quelle est une fonction générale pour l'habillage JavaScript ?

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X