La méthode split() permet de diviser une chaîne de caractères à partir d'un séparateur pour fournir un tableau de sous-chaînes.

Syntaxe

str.split([séparateur[, qtéMax]])

Paramètres

séparateur Facultatif

Paramètre optionnel qui définit le ou les caractères à utiliser pour scinder la chaîne. Le séparateur est considéré comme une chaîne ou une expression rationnelle. Si le séparateur est omis ou qu'il n'apparaît pas dans la chaîne, le tableau retourné contiendra un unique élément contenant la chaîne entière. Si le séparateur est une chaîne vide, la chaîne str sera convertie en un tableau de caractères. Si le séparateur contient un ou plusieurs caractères, la chaîne de caractères entière doit être trouvée pour effectuer une césure.

Attention ! Si c'est la chaîne vide qui est utilisée comme séparateur, la chaîne ne sera pas découpée entre chaque caractère visible (grapheme cluster) mais entre chaque codet UTF-16 et les paires de surrogates seront détruites.

qtéMax Facultatif
Paramètre optionnel. Un entier définissant la limite sur le nombre de sous-chaînes à retourner. La méthode split scindera toujours la chaîne à partir du séparateur, mais le tableau retourné contiendra au plus qtéMax sous-chaînes.

Valeur de retour

Un tableau (Array) qui contient les fragments de la chaîne appelante, découpée en fonction du séparateur indiqué.

Description

Lorsqu'il est trouvé, le séparateur est supprimé de la chaîne et les sous-chaînes sont retournées dans un tableau. Si le séparateur est omis, le tableau contiendra un élément correspondant à la chaîne courante. Si le séparateur est une chaîne vide, la chaîne courante est convertie en un tableau composé des caractères de la chaîne. Si le séparateur est uniquement présent au début et/ou à la fin de la chaîne, le tableau contiendra une chaîne vide comme premier et/ou dernier élément (si on utilise cette méthode sur une chaîne qui ne contient que le séparateur, le tableau obtenu aura deux éléments qui seront chacun une chaîne vide).

Si le séparateur est une expression rationnelle qui contient des parenthèses groupantes, à chaque fois que le séparateur correspond, les résultats (incluant tout résultat indéfini) des groupes iront dans le tableau retourné. Cependant, tous les navigateurs ne supportent pas cette possibilité.

La méthode split() ne modifie pas le tableau courant, elle renvoie un nouveau tableau.

Lorsque le séparateur fourni est un tableau, le tableau est automatiquement converti en une chaîne de caractères et c'est cette chaîne qui est utilisée comme séparateur.

Note : Quand la chaîne est vide, split() retourne un tableau contenant une chaîne vide, plutôt qu'un tableau vide. Si la chaîne et le séparateur sont tous les deux des chaînes vides, un tableau vide sera renvoyé.

Exemples

Utiliser split()

L'exemple suivant définit une fonction qui divise une chaîne en un tableau de chaînes selon un délimiteur spécifié. Après la coupe de la chaîne, la fonction affiche des messages indiquant la chaîne initiale (avant la coupe), le délimiteur utilisé, le nombre d'éléments dans le tableau, et les éléments du tableau retourné.

function splitString(stringToSplit, separator) {
  var arrayOfStrings = stringToSplit.split(separator);

  console.log('La chaine d\'origine est : "' + stringToSplit + '"');
  console.log('Le délimiteur est : "' + separator + '"');
  console.log("Le tableau comporte " + arrayOfStrings.length + " elements : ");

  for (var i=0; i < arrayOfStrings.length; i++)
    print(arrayOfStrings[i] + " / ");
}

var tempestString = "Oh brave new world that has such people in it.";
var monthString = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";

var espace = " ";
var virgule = ",";

splitString(tempestString, espace);
splitString(tempestString);
splitString(monthString, virgule);

Cet exemple produira la sortie suivante :

La chaine d'origine est : "Oh brave new world that has such people in it."
Le délimiteur est : " "
Le tableau comporte 10 elements : Oh / brave / new / world / that / has / such / people / in / it. /

La chaine d'origine est : "Oh brave new world that has such people in it."
Le délimiteur est : "undefined"
Le tableau comporte 1 elements : Oh brave new world that has such people in it. /

La chaine d'origine est : "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
Le délimiteur est : ","
Le tableau comporte 12 elements : Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec /

Supprimer les espaces d'une chaîne

Dans l'exemple suivant, split recherche zéro ou plusieurs espaces suivis d'un point-virgule, lui-même suivi par zéro ou plus espaces. Lorsque ce « motif » est trouvé, cela supprime celui-ci de la chaîne. nameList est le tableau retourné du résultat de split.

var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ";

console.log(names);

var re = /\s*(;|$)\s*/;
var nameList = names.split(re);

console.log(nameList);

Ceci affichera deux lignes dans la console ; la première ligne correspondant à la chaîne d'origine, et la seconde au tableau de résultats.

Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
["Harry Trump","Fred Barney","Helen Rigby","Bill Abel","Chris Hand"]

Retourner un nombre limité de sous-chaînes

Dans l'exemple suivant, split() recherche des espaces dans une chaîne et retourne les 3 premières sous-chaînes qui correspondent.

var myString = "Hello World. How are you doing?";
var splits = myString.split(" ", 3);

console.log(splits);

Ce script affichera :

["Hello", "World.", "How"]

Découper une expression rationnelle - Parenthèses capturantes

Si le paramètre séparateur est une expression rationnelle qui contient des parenthèses de capture, les résultats seront retournés dans le tableau.

var myString = "Hello 1 word. Sentence number 2.";
var splits = myString.split(/(\d)/); /* Ce motif correspond à un chiffre et est équivalent à [0-9] */

console.log(splits);

Ce script affichera :

Hello ,1, word. Sentence number ,2,.

Découper une chaîne avec un tableau comme séparateur

var maChaine = "Ceci|est|un|test";
var morceaux = maChaine.split(['|']);

console.log(morceaux); // ["Ceci", "est", "un", "test"]

var maChaine2 = "ca,bc,a,bca,bca,bc";
var morceaux2 = maChaine2.split(["a", "b"]);

console.log(morceaux2); // ["c", "c,", "c", "c", "c"]

Inverser une chaîne en utilisant split()

var str = 'asdfghjkl';
var strReverse = str.split('').reverse().join(''); // 'lkjhgfdsa'
// split renvoie un tableau sur lequel on peut appliquer reverse
// enfin on utilise join pour assembler le tout.

Note : Si on souhaite tester si la chaîne courante est un palindrome, on pourra utiliser l'opérateur ===.

Attention, cela ne fonctionne pas si la chaîne de caractères contient des groupes de graphèmes, même lorsqu'on utilise une méthode de découpage sensible à Unicode.

var str = 'résumé';
var strReverse = str.split(/(?:)/u).reverse().join('');
// => "émusér"

On pourra utiliser une bibliothèque (cf. esrever) si besoin.

Spécifications

Spécification État Commentaires
ECMAScript 3rd Edition (ECMA-262) Standard Définition initiale. Implémentée avec JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
La définition de 'String.prototype.split' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'String.prototype.split' dans cette spécification.
Standard  
ECMAScript Latest Draft (ECMA-262)
La définition de 'String.prototype.split' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome 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

Voir aussi

ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'ArrayBuffer' dans cette spécification.
Standard Définition initiale au sein d'un standard ECMA.

Compatibilité des navigateurs

Nous convertissons les données de compatibilité dans un format JSON. Ce tableau de compatibilité utilise encore l'ancien format car nous n'avons pas encore converti les données qu'il contient. Vous pouvez nous aider en contribuant !

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple 7.0 4.0 (2) 10 11.6 5.1
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple 4.0 (Oui) 4.0 (2) 10 11.6 4.2

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, lockee14, matthieukern, mleduque, AlainRinder, teoli, P45QU10U
Dernière mise à jour par : SphinxKnight,