2012-04-08 22 views
35

Estoy tratando de dividir una cadena de tapas con Javascript,Split por Caps en Javascript

ejemplos de lo que estoy tratando de hacer:

"HiMyNameIsBob" -> "Hi My Name Is Bob" 
"GreetingsFriends" -> "Greetings Friends" 

Soy consciente del método str.split(), sin embargo, no estoy seguro de cómo hacer que esta función funcione con letras mayúsculas.

que he probado:

str.split("(?=\\p{Upper})") 

desgracia que no funciona, cualquier ayuda sería grande.

Respuesta

84

Use RegExp-literales, una visión hacia adelante y [A-Z]:

"HiMyNameIsBob".split(/(?=[A-Z])/).join(" "); // -> "Hi My Name Is Bob" 
+0

Genial! No sabía que sería así de fácil, no pude encontrar nada en Google, gracias – user1294188

+7

para no ser exigente aquí, pero también necesitaba esto. La respuesta anterior NO devuelve "Hola, mi nombre es Bob". Devuelve una matriz. Para obtener una cadena de eso, haz esto: 'input.split (/ (? = [AZ]) /). Join (" ");' – Grandizer

+1

Actualizada esta respuesta gracias a @Grandizer –

8

Puede utilizar String.match para dividirlo.

"HiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
// output 
// ["Hi", "My", "Name", "Is", "Bob"] 

Si tiene letras minúsculas al principio también puede dividirlas. Si no desea este comportamiento, simplemente use + en lugar de * en el patrón.

"helloHiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
// Output 
["hello", "Hi", "My", "Name", "Is", "Bob"] 
+0

Neat, no lo hice sé eso, ¡gracias por el aviso! – user1294188

+0

El patrón debe ser cambiado. Actualmente, no coincide con los caracteres en minúscula anteriores ni con los caracteres en mayúscula individuales. –

+0

IE permite el uso del método de división. –