6.9 KiB
6.9 KiB
title | localeTitle |
---|---|
Spinal Tap Case | Caja del grifo espinal |
Recuerda usar Read-Search-Ask
si te atascas. Tratar de emparejar el programa y escribe tu propio código
Explicación del problema:
Convierte la cadena dada en una oración en minúscula con palabras unidas por guiones.
Enlaces relevantes
- Objeto global de cadena
- Recursos JS Regex
- JS String Prototype Replace
- JS String Prototype ToLowerCase
Sugerencia: 1
Crea una expresión regular para todos los espacios en blanco y guiones bajos.
intenta resolver el problema ahora
Sugerencia: 2
También tendrás que hacer todo en minúsculas.
intenta resolver el problema ahora
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!
¡Solución por delante!
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');
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 .
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');
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 sesplit()
en la expresión regular/(?:_| )+/
Yjoin()
-ed en-
.
Enlaces relevantes
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()
}
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])
]
- se encuentra un carácter de espacio en blanco [
- Unirse a la matriz utilizando un guión (
-
) - Minúsculas toda la cadena resultante
Enlaces relevantes
NOTAS PARA LAS CONTRIBUCIONES:
- 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 .
- Agregue su nombre de usuario solo si ha agregado algún contenido principal relevante . ( NO elimine ningún nombre de usuario existente )
Ver
Wiki Challenge Solution Template
para referencia.