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.
function validacpf( cpf )
{
var i;
s = cpf;
var c = s.substr(0,9);
var dv = s.substr(9,2);
var d1 = 0;
for (i = 0; i < 9; i++)
{
d1 += c.charAt(i)*(10-i);
}
if (d1 == 0)
{
alert("CPF Invalido");
return false;
}
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(0) != d1)
{
alert("CPF Invalido");
return false;
}
d1 *= 2;
for (i = 0; i < 9; i++)
{
d1 += c.charAt(i)*(11-i);
}
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(1) != d1)
{
alert("CPF Invalido");
return false;
}
return true;
}
[quote=lap_junior]Exemplo de uso do BrazilUtils
Para PIS utilize a classe org.brazilutils.br.id.PisPasep
Para RG a classe org.brazilutils.br.id.RG[/quote]
Essas duas classes não existem mais. Por enquanto, não há validação de PIS e RG.
[quote=RafaelRio][quote=lap_junior]Exemplo de uso do BrazilUtils
Para PIS utilize a classe org.brazilutils.br.id.PisPasep
Para RG a classe org.brazilutils.br.id.RG[/quote]
Essas duas classes não existem mais. Por enquanto, não há validação de PIS e RG.[/quote]
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
public static boolean validadaCPF(String num_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) {
return false;
} else {
Pattern pat = Pattern.compile("\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d");
Matcher mtc = pat.matcher(num_cpf);
if(!mtc.find()) {
return false;
} else {
int[] validador = new int[] {11,10,9,8,7,6,5,4,3,2}; // Sequencia de validacao
int primeiro = 0, segundo = 0; // Digitos validadores
// Separa os digitos do cpf, multiplica esses digitos
// pelo validador e soma os multiplicados
int soma = 0;
int[] cpf = new int[num_cpf.length()];
for(int i = 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]) {
return false;
} else {
// Multiplica os digitos do cpf + o primeiro validador pelo validador e soma os multiplicados
soma = 0;
for(int i = 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]) {
return false;
} else {
return true;
}
}
}
}
}
[quote=RafaelRio][quote=RafaelRio][quote=lap_junior]Exemplo de uso do BrazilUtils
Para PIS utilize a classe org.brazilutils.br.id.PisPasep
Para RG a classe org.brazilutils.br.id.RG[/quote]
Essas duas classes não existem mais. Por enquanto, não há validação de PIS e RG.[/quote]