Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

148
Visualizações
Cómo dividir palabras sin espacios en una oración en la que cada palabra comience con letra mayúscula usando Javascript

Dada una cadena como esta "HowToMakeALiving", quiero dividirla y convertirla en "Cómo ganarse la vida". Otra situación es "howToMakeALiving", por lo que la primera palabra "how" no comienza con mayúscula mientras que otras palabras comienzan con mayúscula y todavía quiero dividirla y generar "Cómo ganarse la vida".

Hay algunas preguntas en la comunidad, pero rara vez están relacionadas con JS o necesitan usar paquetes, y su situación es más complicada, la cadena dada está en minúsculas.

Entonces, la pregunta es ¿cómo puedo hacer eso mediante expresiones regulares en Javascript o cualquier otro método mejor?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Podrías usar una expresión regular:

 function splitWords(s) { return s.match(/.[^AZ]*/g).map((word, i) => (i ? word[0].toLowerCase() : word[0].toUpperCase()) + word.slice(1) ).join(" "); } let words = splitWords("howToMakeALiving"); console.log(words); words = splitWords("WhyIHadMyDNATakenInParis"); console.log(words);

La expresión regular busca cualquier carácter ( . ) seguido de una serie de caracteres que no sean mayúsculas. Cada hallazgo es una palabra.

El bucle distingue entre la primera palabra ( i == 0 ) y otras palabras ( i es veraz). El primer carácter de cada palabra se convierte en mayúsculas (primera palabra) o en minúsculas (todas las demás palabras).

Finalmente, las palabras se unen en una frase uniéndolas con un espacio como separador.

Alternativa para abreviaturas en mayúsculas

Si es necesario capturar abreviaturas como "DNA" y el pronombre personal "I", podría:

  • Haz una comparación explícita con "yo", de tal forma que siempre se ponga en mayúscula.
  • Solo separe una palabra cuando haya como máximo una mayúscula más después del salto; puede usar una expresión regular con funciones de anticipación.

 function splitWords(s) { return s.match(/.([^AZ]+|.*?(?=[AZ]([^AZ]|$)|$))/g).map((word, i) => (i && word !== "I" && (word.length < 2 || word[1] != word[1].toUpperCase()) ? word[0].toLowerCase() : word[0].toUpperCase() ) + word.slice(1) ).join(" "); } let words = splitWords("howToMakeALiving"); console.log(words); words = splitWords("WhyIHadMyDNATakenInParis"); console.log(words); words = splitWords("iHateHavingADNATestTaken"); console.log(words);

about 4 years ago · Juan Pablo Isaza Relatório

0

Opción 1: Haría esto con el método de compilación .match() como este:

 let textvalue = 'howToMakeALiving' let splitdata = textvalue.match(/[AZ][az]+|[0-9]+/g).join(" ") console.log(splitdata)

Opción 2: puede usar el método string.split() que también admite expresiones regulares, se puede lograr así

 let textvalue = 'howToMakeALiving' let splitdata = textvalue.split(/(?=[AZ])/); console.log(splitdata)

about 4 years ago · Juan Pablo Isaza Relatório

0

Intente esto, puede tener un error o dos, pero lo enviará por el camino correcto.

 var res = ''; var chars = 'HowToMakeALiving'.split(); var lastChar = ''; for (var i = 0; i < chars.length; i++) { if (lastChar = '') lastChar = chars[i]; if (chars[i].toUpperCase() != chars[i] && lastChar.toUpperCase() != lastChar) res = res + ' '; res = res + chars[i]; } console.log(res)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda