freeCodeCamp/guide/spanish/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../spinal-tap-case/index.md

6.9 KiB

title localeTitle
Spinal Tap Case Caja del grifo espinal

:triangular_flag_on_post: Recuerda usar Read-Search-Ask si te atascas. Tratar de emparejar el programa :busts_in_silhouette: y escribe tu propio código :pencil:

:checkered_flag: Explicación del problema:

Convierte la cadena dada en una oración en minúscula con palabras unidas por guiones.

Enlaces relevantes

:speech_balloon: Sugerencia: 1

Crea una expresión regular para todos los espacios en blanco y guiones bajos.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 2

También tendrás que hacer todo en minúsculas.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 3

La parte difícil es hacer que la parte de la expresión regular funcione, una vez que lo haga, simplemente gire la mayúscula a la minúscula y reemplace los espacios con guiones bajos utilizando replace() .

intenta resolver el problema ahora

¡Alerta de spoiler!

señal de advertencia

¡Solución por delante!

:beginner: Solución de código básico:

function spinalCase(str) { 
  // Create a variable for the white space and underscores. 
  var regex = /\s+|_+/g; 
 
  // Replace low-upper case to low-space-uppercase 
  str = str.replace(/([az])([AZ])/g, '$1 $2'); 
 
  // Replace space and underscore with - 
  return str.replace(regex, '-').toLowerCase(); 
 } 
 
 // test here 
 spinalCase('This Is Spinal Tap'); 

:rocket: Ejecutar código

Explicación del código:

  • expresiones regulares contiene la expresión regular /\s+|_+/g , que seleccionará todos los espacios en blanco y caracteres de subrayado.
  • La primera replace() pone un espacio antes de los caracteres en mayúsculas se encuentran en la cadena str manera que los espacios pueden ser reemplazados por guiones más adelante.
  • Al devolver la cadena, otro replace() reemplaza los espacios y los guiones bajos con guiones usando expresiones regulares .

:sunflower: Solución de código intermedio:

function spinalCase(str) { 
  // Replace low-upper case to low-space-uppercase 
  str = str.replace(/([az])([AZ])/g, '$1 $2'); 
  // Split on whitespace and underscores and join with dash 
  return str.toLowerCase().split(/(?:_| )+/) .join('-'); 
 } 
 
 // test here 
 spinalCase('This Is Spinal Tap'); 

:rocket: Ejecutar código

Explicación del código:

  • Al igual que en la primera solución, la primera replace() pone un espacio antes de los caracteres en mayúsculas se encuentran en la cadena str manera que los espacios pueden ser reemplazados por guiones más adelante.
  • En lugar de utilizar replace() aquí para reemplazar los espacios en blanco y los guiones bajos con guiones, la cadena se split() en la expresión regular /(?:_| )+/ Y join() -ed en - .

Enlaces relevantes

:rotating_light: Solución avanzada de código:

function spinalCase(str) { 
  // "It's such a fine line between stupid, and clever." 
  // --David St. Hubbins 
 
  return str.split(/\s|_|(?=[AZ])/).join('-').toLowerCase() 
 } 

:rocket: Ejecutar código

Explicación del código:

  • Dividir la cadena en una de las siguientes condiciones ( convertida a una matriz )
    • se encuentra un carácter de espacio en blanco [ \s ]
    • se encuentra el carácter de subrayado [ _ ]
    • o es seguido por una letra mayúscula [ (?=[AZ]) ]
  • Unirse a la matriz utilizando un guión ( - )
  • Minúsculas toda la cadena resultante

Enlaces relevantes

:clipboard: NOTAS PARA LAS CONTRIBUCIONES:

  • :warning: NO agregue soluciones que sean similares a las soluciones existentes. Si cree que es similar pero mejor , intente fusionar (o reemplazar) la solución similar existente.
  • Agregue una explicación de su solución.
  • Categorice la solución en una de las siguientes categorías: Básica , Intermedia y Avanzada . :traffic_light:
  • Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . ( :warning: NO elimine ningún nombre de usuario existente )

Ver :point_right: Wiki Challenge Solution Template para referencia.