2011-10-25 12 views
46

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

Así que desea dividir:

'ThisIsTheStringToSplit' 

en

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

Esto podría terminar siendo útil para algunas personas que buscan una solución este problema: http://stackoverflow.com/a/25732260/1454888 –

Respuesta

84

Me gustaría hacer esto con .match() así:

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

que hará que una serie como esta:

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

edición: ya que el método string.split() también soporta expresiones regulares que se puede lograr como esto

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

que también va a resolver el problema de la comment:

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

Esto no encontrará caracteres en mayúscula. Sugiero lo siguiente: '" thisIsATrickyOne ".match (/ ([A-Z]? [^ A-Z] *)/g) .slice (0, -1)' – andrewmu

4

Aquí está :)

var arr = UpperCaseArray("ThisIsTheStringToSplit"); 

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

Esto también se dividiría por cualquier ',' que estuviera originalmente en la cadena ... – Matt

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

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