Hice esto para crear claves similares a YouTube. Utiliza expresiones regulares para capturar números y luego pasa por encima de una lista de coincidencias para ensamblar la cadena.
El orden de la matriz de caracteres es arbitrario, en realidad puede hacer que sea lo que quiera, pero una vez que lo tenga establecido, no lo cambie más adelante, de lo contrario, puede encontrar claves duplicadas, y asegúrese de no tiene ningún duplicado
Aquí, num, es la variable que contiene la tecla de entrada. Es muy largo en esta muestra, pero puede ser de cualquier longitud.
var chars = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
num = "000102030405060708091011121314151617181920212223242526272829303132333435373839404142434445464748495051525354555657585960616263646566";
getnums = num.match(/(0|6[0-1]|[0-5]?[0-9])/g);
to62 = "";
for (var i=0;i<getnums.length;i++) {
to62 = to62 + chars[parseInt(getnums[i])];
// console.log(getnums[i] + ": " + chars[parseInt(getnums[i])])
}
console.log(to62);
Y aquí es una implementación en la fusión fría que utiliza matrices basadas en 1 en lugar de matrices basadas 0 de javascript, en caso de que ayuda a nadie.
<cfscript>
chars = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
num = "0001020304050607080910111213141516171819202122232425262728293031323334353738394041424344454614748495051525354555657585960616263646566";
getnums = ReMatch("(0|6[0-1]|[0-5]?[0-9])",num);
to62 = "";
for (i=1; i<=arraylen(getnums); i=i+1) {
to62 = to62 & chars[getnums[i]+1];
}
writeoutput(to62);
</cfscript>
Dice "una lista de dígitos" en lugar de "un número". ¿Esto significa que quieres que "000006" se trate de manera diferente a "6"? – AakashM
Una buena pregunta. No, yo no. Voy a corregir eso para que quede más claro. – alumb