¿Cómo convertir una string en un caso de kebab usando JavaScript?

Dada una string con letras separadas por espacios, camello o serpiente, la tarea es encontrar el kebab de la siguiente string. 

Por ejemplo :

Input:  Geeks For Geeks
Output: geeks-for-geeks

Input:   GeeksForGeeks
Output:  geeks-for-geeks

Input:  Geeks_for_geeks
Output: geeks-for-geeks

Esto se puede lograr de las siguientes maneras:

Enfoque 1: usando el método de reemplazo

Aquí tenemos una función llamada kebabCase que toma una string y devuelve una string después de convertir el caso de kebab. Aquí estamos usando el método de reemplazo dos veces porque el primer método de reemplazo es obtener todas las letras que están cerca de las letras mayúsculas y reemplazarlas con un guión. Y la segunda función de reemplazo se usa para obtener los espacios y guiones bajos y reemplazarlos con un guión. 

Javascript

<script>
    const kebabCase = string => string
        .replace(/([a-z])([A-Z])/g, "$1-$2")
        .replace(/[\s_]+/g, '-')
        .toLowerCase();
  
    console.log(kebabCase('Geeks For Geeks'));
    console.log(kebabCase('GeeksForGeeks'));
    console.log(kebabCase('Geeks_For_Geeks'));
</script>

Producción:

geeks-for-geeks
geeks-for-geeks
geeks-for-geeks

Enfoque 2: utilizando el método de coincidencia

Aquí, usamos el método del mapa que verifica el espacio, las letras mayúsculas y los guiones bajos. Crea una array y empuja las palabras que separan las strings. Ahora únase a la array con el guión usando el join(). Después de eso, convierta toda la string en minúsculas.

Javascript

<script>
    const kebabCase = str => str
        .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
        .join('-')
        .toLowerCase();
  
    console.log(kebabCase('Geeks For Geeks'));
    console.log(kebabCase('GeeksForGeeks'));
    console.log(kebabCase('Geeks_For_Geeks'));
</script>

Producción:

geeks-for-geeks
geeks-for-geeks
geeks-for-geeks

Publicación traducida automáticamente

Artículo escrito por _saurabh_jaiswal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *