Split sur plusieurs caractères - JavaScript

Comment diviser une chaîne de caractères en spécifiant plusieurs séparateurs en JavaScript ?
J’essaie de séparer à la fois les virgules et les espaces, mais la fonction split() de JavaScript ne prend en charge qu’un seul séparateur.

Passez une expression régulière en tant que paramètre à la fonction split():

"Hello world, bonjour!".split(/[\s,]+/)
// résultat: Hello,world,bonjour!

Vous pouvez récupérer le dernier élément en sélectionnant la longueur du tableau moins 1 :

arr = "Hello world, bonjour!".split(/[\s,]+/)  // ["Hello", "world", "bonjour!"] 
last = arr[arr.length - 1]   // "bonjour!"

Vous pouvez passer une expression régulière dans la méthode split() de JavaScript.

"1,2 3".split(/,| /) 
// ["1", "2", "3"]

Si vous souhaitez que plusieurs séparateurs soient considérés comme un seul et même séparateur :

"1, 2, , 3".split(/(?:,| )+/) 
// ["1", "2", "3"]

Vous devez utiliser la parenthèse non capturante (?:), car sinon elle est recollée dans le résultat.

Une autre méthode simple mais efficace consiste à utiliser de manière récurrente les fonctions « split » et « join ».

"x=y,z:w".split('=').join(',').split(':').join(',').split(',')

En gros, faire une division suivie d’une jointure, donc cela remplace chaque séparateur par une virgule, puis une fois qu’ils sont tous remplacés, cela fait une division finale basée sur la virgule.

Le résultat de l’expression ci-dessus est :

['x', 'y', 'z', 'w']

Pour aller plus loin, vous pouvez également le placer dans une fonction :

function splitMulti(str, sep){
        var tmp = sep[0]; // Nous pouvons utiliser le premier sep comme caractère de jonction temporaire
        for(var i = 1; i < sep.length; i++){
            str = str.split(sep[i]).join(tmp);
        }
        str = str.split(tmp);
        return str;
}

Utilisation :

splitMulti('x=y,z:w', ['=', ',', ':']) // ['x', 'y', 'z', 'w']

Voici quelques cas où l’utilisation de Regex peut s’avérer utile :

("Bonjour tous,le-monde").split(/\W+/); // renvoie ['Bonjour', 'tous', 'le', 'monde']

Voici le demo.