Muitas vezes precisamos fazer a validação de CPF e do CNPJ, seja por que cliente solicitou essa função no sistema ou até mesmo para se manter a integridade do sistema. Tanto o CPF como o CNPJ possui dígito verificador que serve para fazer a validação do número digitado, para conhecer como é feito o cálculo clique aqui. Veremos agora como criar uma função para fazer a validação desses campos (para saber com o que é uma função clique aqui).
A primeira função é para fazer a validação do CPF, deve ser passado como parâmetro o número que será testado(apenas números), a função então retornará verdadeiro ou falso.
A primeira função é para fazer a validação do CPF, deve ser passado como parâmetro o número que será testado(apenas números), a função então retornará verdadeiro ou falso.
Para gerar um CPF válido para testar a função clique aqui.
Delphi/Pascal
[+/-] Mostrar/Ocultar
function isCPF(num: string): boolean; var n1,n2,n3,n4,n5,n6,n7,n8,n9: integer; d1,d2: integer; digitado, calculado: string; begin // Pega os 9 primeiros números n1:=StrToInt(num[1]); n2:=StrToInt(num[2]); n3:=StrToInt(num[3]); n4:=StrToInt(num[4]); n5:=StrToInt(num[5]); n6:=StrToInt(num[6]); n7:=StrToInt(num[7]); n8:=StrToInt(num[8]); n9:=StrToInt(num[9]); // Faz o cálculo do primeiro dígito d1:=n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10; d1:=11-(d1 mod 11); if d1>=10 then d1:=0; //Se o cálculo for igual a 10 então ele é zero //Faz o calculo do segundo digito d2:=d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11; d2:=11-(d2 mod 11); if d2>=10 then d2:=0; //se o cálculo for igual a 10 então ele é zero calculado:=inttostr(d1)+inttostr(d2); //Define o que foi calculado digitado:=num[10]+num[11]; //Define o que foi digitado //Se o número que foi calculado for igual ao que foi digitado //a função retorna verdadeiro, senão retorna falso Result := (calculado=digitado); end;
[+/-] Mostrar/Ocultar
static boolean isCpf(String cpf) { int n1,n2,n3,n4,n5,n6,n7,n8,n9; int d1,d2; String digitado, calculado; // Pega os 9 primeiros números n1 = (int)cpf.charAt(0)-48; n2 = (int)cpf.charAt(1)-48; n3 = (int)cpf.charAt(2)-48; n4 = (int)cpf.charAt(3)-48; n5 = (int)cpf.charAt(4)-48; n6 = (int)cpf.charAt(5)-48; n7 = (int)cpf.charAt(6)-48; n8 = (int)cpf.charAt(7)-48; n9 = (int)cpf.charAt(8)-48; // Faz o cálculo do primeiro dígito d1 = n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10; d1 = 11-(d1 % 11); if (d1 >= 10){ d1 = 0; } // Faz o cálculo do segundo dígito d2 = d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11; d2 = 11-(d2 % 11); if (d2 >= 10){ d2 = 0; } calculado = Integer.toString(d1)+Integer.toString(d2);//Define o que foi calculado digitado = cpf.substring(9,11); //Define o que foi digitado //Se o número que foi calculado for igual ao que foi digitado //a função retorna verdadeiro, senão retorna falso return (calculado.equals(digitado)); }
[+/-] Mostrar/Ocultar
function isCPF($cpf){ // Pega os 9 primeiros números $n1 = $cpf{0}; $n2 = $cpf{1}; $n3 = $cpf{2}; $n4 = $cpf{3}; $n5 = $cpf{4}; $n6 = $cpf{5}; $n7 = $cpf{6}; $n8 = $cpf{7}; $n9 = $cpf{8}; // Faz o cálculo do primeiro dígito $d1 = $n9*2+$n8*3+$n7*4+$n6*5+$n5*6+$n4*7+$n3*8+$n2*9+$n1*10; $d1 = 11-($d1 % 11); if ($d1>=10) { $d1 = 0; } //Se o cálculo for igual a 10 então ele é zero //Faz o calculo do segundo digito $d2 = $d1*2+$n9*3+$n8*4+$n7*5+$n6*6+$n5*7+$n4*8+$n3*9+$n2*10+$n1*11; $d2 = 11-($d2 % 11); if ($d2>=10) { $d2 = 0; } //se o cálculo for igual a 10 então ele é zero $calculado = $d1.$d2; //Define o que foi calculado $digitado = $cpf{9}.$cpf{10}; //Define o que foi digitado //Se o número que foi calculado for igual ao que foi digitado //a função retorna verdadeiro, senão retorna falso return (strcmp($calculado, $digitado) == 0); }
[+/-] Mostrar/Ocultar
public static bool isCpf(string cpf) { int n1,n2,n3,n4,n5,n6,n7,n8,n9; int d1,d2; string digitado, calculado; // Pega os 9 primeiros números n1 = Convert.ToInt32(cpf.Substring(0,1)); n2 = Convert.ToInt32(cpf.Substring(1,1)); n3 = Convert.ToInt32(cpf.Substring(2,1)); n4 = Convert.ToInt32(cpf.Substring(3,1)); n5 = Convert.ToInt32(cpf.Substring(4,1)); n6 = Convert.ToInt32(cpf.Substring(5,1)); n7 = Convert.ToInt32(cpf.Substring(6,1)); n8 = Convert.ToInt32(cpf.Substring(7,1)); n9 = Convert.ToInt32(cpf.Substring(8,1)); // Faz o cálculo do primeiro dígito d1 = n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10; d1 = 11-(d1 % 11); if (d1 >= 10){ d1 = 0; } // Faz o cálculo do segundo dígito d2 = d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11; d2 = 11-(d2 % 11); if (d2 >= 10){ d2 = 0; } calculado = Convert.ToString(d1)+Convert.ToString(d2);//Define o que foi calculado digitado = cpf.Substring(9,2); //Define o que foi digitado //Se o número que foi calculado for igual ao que foi digitado //a função retorna verdadeiro, senão retorna falso return (calculado.Equals(digitado)); }
Nenhum comentário:
Postar um comentário