I need to create a JavaScript function that gets a string of letters and numbers and it returns the next count value. The count goes from 0 to Z. Sequence example:
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - A - B - C - D Y - Z - 01 - 02 - 03 [...] - 0Z - 10 - 11 - 12 [...]
Function example:
nextCode ("AF10") // Return "AF11"
nextCode ("A4ZZ") // Return "A500"
What I've tried so far:
/*Gerar Novo Código*/
function nextCode(lastCode){
//Verifica o Tamanho
var codeSize = lastCode.length;
//Verifica o index do ultimo caracter
var indexLastValidChar = codeSize-1;
//Se o ultimo caracter for igual a Z pega o caractere anterior (loop)
var loopAtive;
do {
indexLastValidChar = loopAtive == true ? indexLastValidChar-1 :indexLastValidChar;
var lastValidChar = lastCode.substr(indexLastValidChar, 1);
loopAtive = true;
} while(lastValidChar == "Z");
//Pega a primeira metade do novo código
var firstHalfCode = lastCode.slice(0, indexLastValidChar);
//Verifica se o ultimo caracter diferente de Z é numero ou letra
var isChar = isNaN(parseInt(lastValidChar));
//Se for char, gera o próximo caracter
var newChar;
if (isChar){
newChar = String.fromCharCode(lastValidChar.charCodeAt(0)+1);
} //Se não for, verifica se o número é 9
else if (lastValidChar == "9") {
newChar = "A";
} //Se não for, adicona um ao número
else {
newChar = parseInt(lastValidChar) + 1;
}
//Junta primeira metade
firstHalfCode = firstHalfCode + newChar;
//Adicona zeros ao final, caso codeSize seja diferente de indexLastValidChar+1 - ou seja, existem Zs
for (var i = 0; i < codeSize - indexLastValidChar+1; i++) {
var newCode = firstHalfCode + 0;
}
//Mostra o novo código
console.log(newCode);
}
nextCode ("AF10");
nextCode ("A4ZZ");
The results do not work out and I'm kind of lost ...