Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

187
Vistas
Agregue espacios antes de Mayúsculas y luego conviértalos en minúsculas

Estoy tratando de hacer una función que limite el espacio en el que toma una entrada como "iLikeSwimming" y luego genera "me gusta nadar".

Este es mi intento:

 function isUpper(str) { return !/[az]/.test(str) && /[AZ]/.test(str); } function capSpace(txt) { var arr = Array.from(txt); for (let i = 1; i < txt.length; i++){ if (isUpper(txt[i]) == true) { arr.splice((i),0,' ') } } return arr.join('').toString().toLowerCase(); }

Es bueno para cadenas con una sola letra mayúscula, sin embargo, se vuelve raro con más de una.

Ejemplo Entradas y salidas: Entradas: capSpace("iLikeSwimming"); capSpace("helloWorld"); Salidas: 'i lik eswimming' 'hello world'

Realmente apreciaría si alguien puede señalar el problema con mi código. Sé que hay otras preguntas "similares" a esta, pero estoy tratando de aprender mi error en lugar de simplemente copiar, no pude entender ninguna de las otras preguntas. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

1) Simplemente puede lograr esto usando expresiones regulares y el método de reemplazo de cadenas

 const capSpace = (str) => str.replace(/([AZ])/g, (match) => ` ${match.toLowerCase()}`); console.log(capSpace("iLikeSwimming")); console.log(capSpace("helloWorld"));

2) También puedes hacerlo con dividir , mapear y unir

 const capSpace = (str) => str .split("") .map((s) => (/[AZ]/.test(s) ? ` ${s.toLowerCase()}` : s)) .join(""); console.log(capSpace("iLikeSwimming")); console.log(capSpace("helloWorld"));

about 4 years ago · Juan Pablo Isaza Denunciar

0

La razón por la que se pone raro con las cadenas que tienen más de 1 letra mayúscula es que cada vez que encuentras una, agregas un espacio en blanco que hace que los siguientes índices aumenten en una sola unidad.

Es una solución simple: simplemente coloque un contador splitCount para realizar un seguimiento de cuántos espacios ha agregado y súmelo con el índice i para corregir los índices.

 function isUpper(str) { return !/[az]/.test(str) && /[AZ]/.test(str); } function capSpace(txt) { var arr = Array.from(txt); var splitCount = 0; // added a counter for (let i = 1; i < txt.length; i++){ if (isUpper(txt[i]) === true) { // sum it with i arr.splice((i + splitCount),0,' ') splitCount++; // increase every time you split } } return arr.join('').toString().toLowerCase(); } console.log(capSpace('iLikeSwimming'))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay uno simple que hice. Coincide con las letras mayúsculas y luego las reemplaza.

 const testString = "ILoveMoney"; function caps2Spaces(str) { const matches = str.match(/[AZ]/g); for (const letter of matches) { str = str.replace(letter, ` ${letter.toLowerCase()}`) } return str.trim(); } console.log(caps2Spaces(testString));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda