esta es mi opinión sobre el problema. He pasado con éxito 3/4. lo único que arruina mi solución es ese espacio en blanco adicional después de 'teleburbujas'. ¿Cómo avanzo más? No soy bueno con reemplazar.
function spinalCase(str) { let k=str.split(/[\s-_]?(?=[AZ])/g).join('-').toLowerCase() console.log(k) return k } spinalCase('This Is Spinal Tap');//passed spinalCase("thisIsSpinalTap")//passed spinalCase("The_Andy_Griffith_Show")//passed spinalCase("Teletubbies say Eh-oh")//not working spinalCase("AllThe-small Things")//passedPuede usar esta expresión regular para solucionar su problema:
/\s+|[-_]*(?=[AZ])/Código:
function spinalCase(str) { let k = str.split(/\s+|[-_]*(?=[AZ])/g).join('-').toLowerCase(); console.log(k); return k; } spinalCase('This Is Spinal Tap'); //passed spinalCase("thisIsSpinalTap"); //passed spinalCase("The_Andy_Griffith_Show"); //passed spinalCase("Teletubbies say Eh-oh"); //passed spinalCase("AllThe-small Things"); //passedDetalles RegEx:
\s+ : Partido 1+ espacios en blanco| : O[-_]*(?=[AZ]) : Coincide con 0 o más guiones bajos o guiones si van seguidos de una letra mayúscula