Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

136
Views
Manipulación compleja de cadenas por expresiones regulares de JavaScript

Estoy generando un nombre significativo con la siguiente regla en un programa JavaScript/Node JS:

Entrada: " tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId "

Salida esperada: "TenancyAccountAccountPublicIdWorkspaceWorkspacePublicIdRemove-userUserPublicId"

Normas:

  1. reemplace cualquier carácter con cero o más guiones bajos a la mayúscula no subrayada Ejemplo: x | __*x => X
  2. Si existe, elimine el último _

Esto es lo que se intenta hasta ahora, buscando mejores alternativas, si las hay:

 const convertBetterString = (input) => { const finalString = []; if (input && input.includes('_')) { const inputStringSeparation = input.split('_'); if (inputStringSeparation.length > 1) { if (inputStringSeparation[inputStringSeparation.length - 1] === '') { inputStringSeparation.splice(inputStringSeparation.length - 1, 1); } inputStringSeparation.forEach((val, index) => { if (val === '' && inputStringSeparation[index + 1]) { const actualString = inputStringSeparation[index + 1]; const formattedString = actualString.charAt(0).toUpperCase() + actualString.slice(1); finalString.push(formattedString); } }); return finalString.length > 0 ? finalString.join('') : inputStringSeparation.join(''); } else { return input.charAt(0).toUpperCase() + input.slice(1); } } else { return input; } }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Dividir y rebanar

 const capitalise = str => str.slice(0,1).toUpperCase() + str.slice(1); // you can add more tests const str = "tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId" const newStr = str.split(/_+/) .map(word => capitalise(word)) .join("") console.log(newStr)

Regexp con encadenamiento opcional

 const str = "tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId_" const newStr = str.replace(/(?:_+|^)(\w)?/g, (_,letter) => letter?.toUpperCase() ?? "") console.log(newStr)

Explicación

(?:_+|^) sin capturar el guión bajo O iniciar
(\w)? seguido de 0 o 1 letra para ser capturado
(_,letter) => letter?.toUpperCase() ?? "") ignora la coincidencia y escribe en mayúscula la letra si la encuentra, eso también ignora los guiones bajos finales

about 4 years ago · Juan Pablo Isaza Report

0

Puedes usar

 const str = "tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId__"; const newStr = str .replace(/(?:^|_)_*([^\s_])|_+$/g, (_, x) => x ? x.toUpperCase() : '') console.log(newStr);

La expresión regular /(?:^|_)_*([^\s_])|_+$/g coincide con todas las apariciones de

  • (?:^|_) - inicio de cadena o _
  • _* - cero o más guiones bajos
  • ([^\s_]) - Grupo 1: cualquier carácter que no sea espacio en blanco y _ .
  • | - o
  • _+$ - uno o más _ s al final de la cadena.

El (_, x) => x ? x.toUpperCase() : '' reemplazo elimina todos los guiones bajos (incluso si están al final de la cadena) y cambia el valor del Grupo 1 ( x ) a mayúsculas.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!