Alow pessoal, alguém sabe onde tem uma validação pronta em java para RG, CPF e PIS?
Numa busca aqui pelo GUJ, encontrei o seguinte projeto: https://brazilutils.dev.java.net/
Procurei por lá e a princípio não encontrei nada, mas o projeto parece ser interessante.
Fora isso, não encontrei nada muito significativo na web e ate aqui no Guj, a princípio, mas sim muitas pessoas com a mesma necessidade.
Até onde eu saiba, RG não há validação, pois não tem dígito verificador.
Em relação ao PIS, procure no site da Receita Federal, pois deve ter um link para algum manual a respeito.
Em relação ao CPF, segue o algoritmo (em javascript, eu sei, mas é o mais rápido para o momento!) abaixo.
Não prometo a adaptação para o Java, mas fica a tarefa para os leitores do fórum.
Tem aqui pro CPF q eu fiz esses dias…
O código tá sem qualquer otimização, então se alguém quiser melhorá-lo, agradeço
publicstaticbooleanvalidadaCPF(Stringnum_cpf){num_cpf=num_cpf.replace(".","");num_cpf=num_cpf.replace(",","");num_cpf=num_cpf.replace("/","");num_cpf=num_cpf.replace("-","");if(num_cpf.length()<11){returnfalse;}else{Patternpat=Pattern.compile("\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d");Matchermtc=pat.matcher(num_cpf);if(!mtc.find()){returnfalse;}else{int[]validador=newint[]{11,10,9,8,7,6,5,4,3,2};// Sequencia de validacaointprimeiro=0,segundo=0;// Digitos validadores// Separa os digitos do cpf, multiplica esses digitos// pelo validador e soma os multiplicadosintsoma=0;int[]cpf=newint[num_cpf.length()];for(inti=0;i<cpf.length;i++){cpf[i]=Integer.parseInt(String.valueOf(num_cpf.charAt(i)));if(i<(cpf.length-2)){soma+=(cpf[i]*validador[i+1]);}}// Pega o resto da divisao da soma por 11 // Se for menor que dois o primeiro digito eh zero// Se for maior que dois o primeiro digito eh igual a (11 - resto)if((soma%11)<2){primeiro=0;}else{primeiro=(11-(soma%11));}if(primeiro!=cpf[9]){returnfalse;}else{// Multiplica os digitos do cpf + o primeiro validador pelo validador e soma os multiplicadossoma=0;for(inti=0;i<cpf.length-1;i++){soma+=(cpf[i]*validador[i]);}// Pega o resto da divisao da soma por 11 // Se for menor que dois o segundo digito eh zero// Se for maior que dois o segundo digito eh igual a (11 - resto)if((soma%11)<2){segundo=0;}else{segundo=(11-(soma%11));}if(segundo!=cpf[10]){returnfalse;}else{returntrue;}}}}}
R
RafaelRio
Na mesma página que você indicou, baixe Release 0.1.1 (vou falar pro Ironlinx que isso não ficou tão claro).
…tem algumas implementações em outras linguagens, mas basta entender o algoritmo e escrever em java ou como vc quer.
Até onde vi… RG não tem como validar… pode ter letras nele.
flw!
R
rdgc
Para validar APENAS RG DE SÃO PAULO - SSP/SP
int a,b,c,d,j,f,g,h,i,resul;
// RG 91.122.534-1
a = 9;
b = 1;
c = 1;
d = 2;
j = 2;
f = 5;
g = 3;
h = 4;
i = 1;
resul = (2*a)+(3*b)+(4*c)+(5*d)+(6*j)+(7*f)+(8*g)+(9*h)+(100*i);
System.out.println((resul % 11) == 0);