Attention ! Bien que String.prototype.substr(…) ne soit pas strictement obsolète (au sens où elle n'a pas été retirée des standards), elle est définie au sein de l'Annexe B du standard ECMA-262 qui commence par :
… L'ensemble des fonctionnalités et comportements définis dans cette annexe possède une ou plusieurs caractéristiques indésirables. En l'absence d'une utilisation historique, ces fonctionnalités seraient retirés de la spécification. …
… Les développeurs ne devraient pas utiliser ces fonctionnalités et comportements ou présupposer qu'elles existent lors de l'écriture de nouveau code ECMAScript. …

La méthode substr() retourne la partie d'une chaîne de caractères comprise entre l'indice de départ et un certain nombre de caractères après celui-ci.

Syntaxe

chn.substr(début[, longueur])

Paramètres

début
L'indice du premier caractère à inclure dans la sous-chaîne retournée.
longueur
Optionnel. Le nombre de caractères à extraire.

Valeur de retour

Une nouvelle chaîne contenant la partie indiquée de la chaîne donnée.

Description

substr() extrait longueur caractères d'une string, en comptant à partir de l'indice début.

Si début est un nombre positif, l'indice commence à compter du début de la chaîne. Sa valeur est limitée à chn.length.

Si début est un nombre négatif, l'indice commence à compter de la fin de la chaîne. Sa valeur est limitée à -chn.length.

Note : dans JScript de Microsoft, les valeurs négatives de l'argument début ne sont pas considérées comme faisant référence à la fin de la chaîne.

Si longueur est omise, substr() extrait les caractères jusqu'à la fin de la chaîne.

Si longueur est undefined, substr() extrait les caractères jusqu'à la fin de la chaîne.

Si longueur est négative, elle est traitée comme 0.

Pour début comme pour longueur, NaN est traité comme 0.

Exemples

Utiliser substr()

var uneChaine = 'Mozilla';

console.log(uneChaine.substr(0, 1));   // 'M'
console.log(uneChaine.substr(1, 0));   // ''
console.log(uneChaine.substr(-1, 1));  // 'a'
console.log(uneChaine.substr(1, -1));  // ''
console.log(uneChaine.substr(-3));     // 'lla'
console.log(uneChaine.substr(1));      // 'ozilla'
console.log(uneChaine.substr(-20, 2)); // 'Mo'
console.log(uneChaine.substr(20, 2));  // ''

Émulation

JScript de Microsoft ne supporte pas les valeurs négatives pour l'indice de début. Pour utiliser cette fonctionnalité, vous pouvez utiliser le code suivant :

// N'appliquer que lorsque la fonction est incomplète
if ('ab'.substr(-1) != 'b') {
  /**
   *  Obtenir la sous-chaîne d'une chaîne
   *  @param  {entier}  début     où démarrer la sous-chaîne
   *  @param  {entier}  longueur  combien de caractères à retourner
   *  @return {chaîne}
   */
  String.prototype.substr = function(substr) {
    return function(début, longueur) {
      // Appel de la méthode originale
      return substr.call(this,
        // Si on a un début négatif, calculer combien il vaut à partir du début de la chaîne
        // Ajuster le paramètre pour une valeur négative
        début < 0 ? this.length + début : début,
        longueur)
    }
  }(String.prototype.substr);
}

Spécifications

Spécification État Commentaires
ECMAScript 3rd Edition (ECMA-262) Standard Définie dans la Compatibility Annex B (informative). Implémentée dans JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
La définition de 'String.prototype.substr' dans cette spécification.
Standard Définie dans la Compatibility Annex B (informative).
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'String.prototype.substr' dans cette spécification.
Standard Définie dans l'Annex B (normative) pour les Additional ECMAScript Features for Web Browsers.
ECMAScript Latest Draft (ECMA-262)
La définition de 'String.prototype.substr' dans cette spécification.
Projet Définie dans l'Annex B (normative) pour les Additional ECMAScript Features for Web Browsers

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simple
Obsolète
Chrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui

Légende

Support complet  
Support complet
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, NemoNobobyPersonne, teoli, Jeremie, Julien.stuby
Dernière mise à jour par : SphinxKnight,