Cadena dividida de Javascript en caracteres en mayúsculas


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])/);

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"

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(",");
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.