¿Cómo formatear la clave de licencia usando JavaScript?

Dada una string, la tarea es formatear la string en la clave de licencia.

Normas:

  • La string de entrada contiene caracteres alfanuméricos y guiones
  • La string de entrada está separada por N+1 grupos usando N guiones.
  • La string de salida debe agruparse por K caracteres usando un guión.
  • El primer grupo puede tener menos de K caracteres pero no cero.
  • La string de salida no debe contener ningún carácter en minúscula.

Ha dado la string de entrada str y el número K

Ejemplo:

Input:  str = "dsf354g4dsg1"
          k = 4
Output: "DSF3-54G4-DSG1"

Input:  str = "d-sf354g4ds-g1dsfgdf-sfd5ds65-46"
          k = 6
Output:  "D-SF354G-40DSGS-FGFSFD-DS6546"

Input:  str = "   d-sf354';.;.';.'...,k/]gcs-hsfgdf-sfs6-46"
Output:   k = 5

Output: "DS-F354K-GCSHS-FGDFS-FS646"

Para solucionar este problema utilizamos los siguientes pasos:

  • Cree una función que tome dos argumentos str y k .
  • Elimine los espacios en blanco iniciales y finales con el método String.trim() .
  • Reemplace todos los caracteres especiales usando el método String.replace() y buscando con regex /[^a-zA-Z0-9]/g .
  • Transforme los caracteres de string en mayúsculas utilizando el método String.toUpperCase() .
  • Convierte la string en Array usando el método String.split() . Ahora tiene str es una array en la que todos los elementos son caracteres en mayúsculas y números (en forma de string).
  • Use un ciclo for e inicialice el ciclo con la longitud de str y ejecútelo hasta que i sea mayor que 0 y después de cada iteración, el valor de i disminuya en k. Básicamente, queremos un bucle que se ejecute desde la parte trasera de la string.
  • Ahora concatene la string en cada iteración con un guión «-«
  • Ahora, en str usando el método Array.join() , convierta str en String y devuelva la string de la función.

Javascript

<script>
    function format(str, k) {
        str = str
 
            // Remove the white spaces
            .trim()
 
            // Replace all the special
            // characters with ""
            .replace(/[^a-zA-Z0-9]/g, "")
 
            // Transform the string into
            // uppercase characters
            .toUpperCase()
             
            // Convert the string into array
            .split("");
 
        // Store the length of the
        // array into len
        let len = str.length;
 
 
        for (let i = len; i > 0; i = i - k) {
            if (i != len) {
 
                // Concatenate the string with "-"
                str[i - 1] = str[i - 1] + "-";
            }
        }
 
        //  Join the array to make it a string
        return str.join("");
    }
 
    console.log(format("dsf354g4dsg1", 4))
    console.log(format(
        "d-sf354g40ds-gsfgf-sfdds65-46", 6))
    console.log(format(
"   d-sf354';.;.';.'...,k/]gcs-hsfgdf-sfs6-46", 5))
</script>

Producción:

"DSF3-54G4-DSG1"

"D-SF354G-40DSGS-FGFSFD-DS6546"

"DS-F354K-GCSHS-FGDFS-FS646"

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 *