Javascript Split string sur les caractères UpperCase


106

Comment diviser une chaîne en un tableau en Javascript par caractère UpperCase?

Je souhaite donc me séparer:

'ThisIsTheStringToSplit'

dans

('This', 'Is', 'The', 'String', 'To', 'Split')

Cela pourrait
Augusto Barreto

Réponses:


224

Je ferais ceci avec .match()comme ceci:

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+/g);

cela créera un tableau comme celui-ci:

['This', 'Is', 'The', 'String', 'To', 'Split']

edit: puisque la string.split()méthode prend également en charge les regex, cela peut être réalisé comme ceci

'ThisIsTheStringToSplit'.split(/(?=[A-Z])/); // positive lookahead to keep the capital letters

cela résoudra également le problème du commentaire:

"thisIsATrickyOne".split(/(?=[A-Z])/);

47
Cela ne trouvera pas de caractères majuscules uniques. Je suggère ce qui suit: "thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1)
andrewmu

18
.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Cela devrait également gérer les nombres .. la jointure à la fin entraîne la concaténation de tous les éléments du tableau en une phrase si c'est ce que vous recherchez

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Production

"This Is The String To Split"

C'est parfait. Mais quiconque l'utilise doit faire attention dans le cas suivant: 'ThisIs8TheSt3ringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")affichera This Is 8 The St 3 To Split, en supprimant la petite chaîne de casse ( ring) après 3.
Diablo

9

Vous voilà :)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

function UpperCaseArray(input) {
    var result = input.replace(/([A-Z]+)/g, ",$1").replace(/^,/, "");
    return result.split(",");
}

0

C'est ma solution qui est rapide, multiplateforme, ne dépend pas de l'encodage et peut être écrite dans n'importe quelle langue facilement sans dépendances.

var s1 = "ThisЭтотΨόυτÜimunəՕրինակPříkladדוגמאΠαράδειγμαÉlda";
s2 = s1.toLowerCase();
result="";
for(i=0; i<s1.length; i++)
{
 if(s1[i]!==s2[i]) result = result +' ' +s1[i];
 else result = result + s2[i];
}
result.split(' ');
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.