Hola a todos:
El post de hoy trataremos el tema de la generación de subcadenas a partir de la extracción de caracteres aleatorios de una cadena en typescript.
Lo voy a realizar con una UDF o custom function que creo que es lo más útil y práctico.
Como no necesitamos datos previos os pasaré el script y lo vamos comentando:
/** @CustomFunction */
function ALFANUM_RANDOM(nNumero: number): string {
//Componemos variables
let numeros: string = '0123456789';
let letras = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ';
let simbolos = '!"#$%&()*+,-./:;<=>?@[\]^_`{|}~'
//concatenamos variables
let sCadena = (numeros + letras + simbolos)
//Obtenemos largo
let lCadena = sCadena.length
//extraemos elementos aletarioamente de la sCadena
let MiCadena = '';
for (let i = 0; i < nNumero; i++) {
MiCadena += sCadena.charAt(Math.floor(Math.random() * lCadena));
}
//pasamos datos al resultado
return MiCadena;
}
En este caso la lógica es muy sencilla, primero creamos tres cadenas con: números del 1 al 9, el abecedario (mayúsculas y minúsculas) y otros caracteres.
Podríamos introducir todo en una única variable, pero así me vale como ejemplo para comentar como se puede concatenar en typescript, y es utilizando «+», por ejemplo: la variable sCadena es un concatenado de las 3 cadenas que hemos creado anteriormente.
let sCadena = (numeros + letras + simbolos)
Una vez que tenemos este dato solo necesitamos recorrer esa cadena aleatoriamente y extraer un caracter. Esto lo hacemos en un loop y por cada ciclo extraemos aleatoriamente un caracter que vamos acumulando en una nueva variable
for (let i = 0; i < nNumero; i++) {
MiCadena += sCadena.charAt(Math.floor(Math.random() * lCadena));
}
Como podéis observamos estamos utilizando varias funciones para conseguirlo:
Math.random () * lCadena: Que nos va a permitir extraer un número entre el 0 y la longitud de sCadena (sCadena).
Math.floor: para extraer el valor entero del resultado anterior (redondeado más bajo).
CharAt: devuelve en un nuevo String de sCadena según el indice que le pasemos como argumento (el resultado de las funciones que hemos ido calculando).
El resultado de aplicar la función, por ejemplo, a el número indicado en unas celdas que tomaremos como la longitud de las celdas será:
Y esto es todo, espero que os haya sido de utilidad y vayamos poco a poco aprendiendo las diversas funciones que podemos utilizar en typescript.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies