Cadena dividida de Javascript en caracteres en mayúsculas

106

¿Cómo se divide una cadena en una matriz en Javascript por carácter UpperCase?

Entonces deseo dividir:

'ThisIsTheStringToSplit'

dentro

('This', 'Is', 'The', 'String', 'To', 'Split')
Nicolás Murray
fuente
Esto podría resultar útil para algunas personas que buscan una solución a este problema: stackoverflow.com/a/25732260/1454888
Augusto Barreto

Respuestas:

222

Yo haría esto .match()así:

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

hará una matriz como esta:

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

editar: dado que el string.split()método también admite expresiones regulares, se puede lograr así

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

eso también resolverá el problema del comentario:

"thisIsATrickyOne".split(/(?=[A-Z])/);
Teneff
fuente
47
Esto no encontrará caracteres individuales en mayúscula. Sugiero lo siguiente: "thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1)
andrewmu
18
.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Esto debería manejar los números también ... la combinación al final da como resultado la concatenación de todos los elementos de la matriz en una oración si eso es lo que está buscando

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

Salida

"This Is The String To Split"
Max
fuente
Esto es perfecto. Pero cualquiera que use esto debe tener cuidado en el siguiente caso: 'ThisIs8TheSt3ringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")saldrá This Is 8 The St 3 To Split, omitiendo la cadena de minúsculas ( ring) después 3.
Diablo
9

Aquí estás :)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

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