2011-01-27 30 views
6

Quiero añadir un espacio entre un mayúsculas y minúsculas en una cadena. Por ejemplo:Espacio entre letras mayúsculas y minúsculas en una cadena en JavaScript

FruityLoops 
FirstRepeat 

Ahora quiero agregar un espacio entre las letras minúsculas y mayúsculas. No sé cómo debería comenzar en JavaScript. Algo con substr o búsqueda? ¿Alguien puede ayudarme?

+3

votantes @close: ¿Cómo es exactamente este un duplicado de una pregunta XSLT ?! –

Respuesta

3

algo tan simple como que:

"LoL".replace(/([a-z])([A-Z])/g, "$1 $2") 

es quizá suficiente;)

2

Puede hacerlo con una búsqueda manual, pero puede ser más fácil con una expresión regular. Suponiendo:

  • Usted sabe que se inicia con un capital
  • Usted no quiere un espacio delante de ese capital
  • ¿Quieres un espacio delante de todos capitales posteriores
Entonces

:

function spacey(str) { 
    return str.substring(0, 1) + 
      str.substring(1).replace(/[A-Z]/g, function(ch) { 
     return " " + ch; 
    }); 
} 

alert(spacey("FruitLoops")); // "Fruit Loops" 

Live example

versión más eficiente inspirado por (pero diferente de) patrick's answer:

function spacey(str) { 
    return str.substring(0, 1) + 
      str.substring(1).replace(/([a-z])?([A-Z])/g, "$1 $2"); 
} 

alert(spacey("FruityLoops")); // "Fruity Loops" 
alert(spacey("FruityXLoops")); // "Fruity X Loops" 

Live example

+1

+1 también funcionará con palabras como FruityJuicyLoops – Aly

+0

¡La única solución que podría encontrar es la que trata con mayúsculas adyacentes! +1, buen señor – Aaron

+0

¿Qué significa esto -/([a-z])? ([A-Z])/g, "$ 1 $ 2" ??? Busque palabras pequeñas que tengan letra minúscula seguida de grande. Lo pequeño es opcional. Ponga un espacio entre el primer grupo (letra minúscula) y el segundo grupo (mayúscula)? – stack1

0

La opción de expresiones regulares se ve mejor. Obtener la expresión regular correcta parece ser complicado sin embargo.

Hay otra pregunta aquí con algunas opciones más complejas intentar:

Regular expression, split string by capital letter but ignore TLA

+1

La mayor parte de ese hilo al que se vincula es específico de C#, y no funcionará en JavaScript. –

Cuestiones relacionadas