Boa tarde!
Preciso fazer um gerador de seriais para produtos aqui no trabalho e as coisas andam meio corridas, por isso vim pedir a ajuda de vocês, pois essa rotina danada está demorando demais pra sair.
O que preciso é de uma rotina que incremente uma seqüência alfanumérica, por exemplo:
A001, A002… A999, B001, etc.
Você já deu sua resposta. Quando chegar em 999, passe para 1, e passe para a próxima letra (se era A, por exemplo, passe para ‘A’ + 1 que é ‘B’.)
lcn.andre
Foi só um exemplo, mas na prática não é tão simples assim. Vou precisar incrementar coisas do tipo:
A003B6FC6F
BCAB00102
093BB76CF
etc… se fosse tão simples assim eu já teria resolvido sozinho, haha.
pmlm
Hexadecimal?
E
entanglement
Quer fazer em hexadecimal ou em Base-36? Em Base-36, você tem os dígitos de 0 a 9, e as letras de A a Z.
classIncrementarAlfanumericos{publicstaticvoidmain(String[]args){// Supondo em hexadecimal, e que tenha exatamente 8 bytes (16 caracteres)Strings="A003B6FC6F";System.out.println(s);// longn=Long.parseLong(s,16);n=n+1;s=Long.toString(n,16).toUpperCase();System.out.println(s);// note que não põe zeros à esquerda (imprime A003B6FC70). Se precisar deles:s=String.format("%016X",n);System.out.println(s);// (imprime 000000A003B6FC70)// Agora supondo em base-36, com 12 posições. s="A003B6FC6F";System.out.println(s);n=Long.parseLong(s,36);n=n+1;s=Long.toString(n,36).toUpperCase();System.out.println(s);// Imprime A003B6FC6G. Note que não põe zeros à esquerda. // Como format não lida com bases arbitrárias, apenas 8, 10 e 16, então // você mesmo é que tem de completar com zeros à esquerda. Algo como:s=("000000000000"+s);s=s.substring(s.length()-12);System.out.println(s);// Imprime 00A003B6FC6G}}