RegExp.prototype[@@split]()
La méthode [@@split]()
permet de découper une chaîne de caractères (String
) en un tableau de sous-chaînes.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Syntaxe
regexp[Symbol.split](str[, limite])
Paramètres
str
- La chaîne de caractères qu'on souhaite découper.
limite
-
Paramètre optionnel. Un entier indiquant le nombre maximal de sous-chaînes à trouver. La méthode
[@@split]()
découpe la chaîne pour chaque correspondance de l'expression rationnellethis
jusqu'à ce que le nombre d'éléments obtenus atteigne cette limite ou que la chaîne n'ait plus de correspondances.
Valeur de retour
Un tableau (Array
) dont les éléments sont les sous-chaînes de caractères issues de la découpe.
Description
Cette méthode est appelée de façon interne par la méthode String.prototype.split()
lorsque l'argument str
est un objet RegExp
. Ainsi, les deux exemples qui suivent sont équivalents et le second est la version interne du premier :
'a-b-c'.split(/-/);
/-/[Symbol.split]('a-b-c');
Cette méthode existe afin de pouvoir adapter le fonctionnement de la découpe pour les sous-classes de RegExp
.
Si le séparateur n'est pas un objet RegExp
, la méthode String.prototype.split()
n'appellera pas cette méthode et ne créera pas d'objet RegExp
.
Exemples
Appel direct
Cette méthode peut être utilisée comme String.prototype.split()
, l'objet this
est différent et l'ordre des arguments également.
var re = /-/g;
var str = '2016-01-02';
var résultat = re[Symbol.split](str);
console.log(résultat); // ["2016", "01", "02"]
Utiliser @@split
avec une sous-classe
Les sous-classes de RegExp
peuvent surcharger [@@split]()
afin de modifier le comportement de la découpe :
class MaRegExp extends RegExp {
[Symbol.split](str, limit) {
var résultat = RegExp.prototype[Symbol.split].call(this, str, limit);
return résultat.map(x => "(" + x + ")");
}
}
var re = new MaRegExp('-');
var str = '2016-01-02';
var résultat = str.split(re); // String.prototype.split appelle re[@@split].
console.log(résultat); // ["(2016)", "(01)", "(02)"]
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'RegExp.prototype[@@split]' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript (ECMA-262) La définition de 'RegExp.prototype[@@split]' dans cette spécification. |
Standard évolutif |
Compatibilité des navigateurs
BCD tables only load in the browser