Stringa di divisione Javascript su caratteri maiuscoli


Risposte:


224

Lo farei in questo .match()modo:

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

creerà un array come questo:

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

modifica: poiché il string.split()metodo supporta anche regex, può essere ottenuto in questo modo

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

che risolverà anche il problema dal commento:

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

47
Questo non troverà singoli caratteri maiuscoli. Suggerisco quanto segue: "thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1)
andrewmu

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

Questo dovrebbe gestire anche i numeri .. l'unione alla fine risulta nel concatenare tutti gli elementi dell'array in una frase se è quello che stai cercando

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

Produzione

"This Is The String To Split"

Questo è perfetto. Ma chiunque lo usi dovrebbe fare attenzione nel caso seguente: 'ThisIs8TheSt3ringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")verrà visualizzato l'output This Is 8 The St 3 To Split, omettendo la stringa minuscola ( ring) dopo 3.
Diablo

9

Ecco qui :)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

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

0

Questa è la mia soluzione che è veloce, multipiattaforma, non dipendente dalla codifica e può essere scritta facilmente in qualsiasi lingua senza dipendenze.

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(' ');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.