Validació de CPF i CNPJ en C#: Codi Comentat i Explicat
Enviado por Programa Chuletas y clasificado en Inglés
Escrito el en
catalán con un tamaño de 6,22 KB
Validació de CPF i CNPJ en C#
A continuació es mostra el codi per validar el CPF i el CNPJ, documents d'identificació utilitzats al Brasil, implementats en C# amb Windows Forms.
Validació del CPF
public bool ValidaCpf(string cpf)
{
int[] multiplicador1 = new int[9] {10,9,8,7,6,5,4,3,2};
int[] multiplicador2 = new int[10] {11,10,9,8,7,6,5,4,3,2};
int soma;
int resto;
string digito;
string tempCpf;
// Elimina els espais de la cadena
cpf = cpf.Trim();
// Replace: elimina els caràcters '.', '-' i '/' substituint-los per ''
cpf = cpf.Replace(".", "").Replace("-", "").Replace("/", "");
if (cpf.Length != 11)
return false;
tempCpf = cpf.Substring(0, 9);
soma = 0;
for (int i = 0; i < 9; i++)
// += el valor actual + el valor rebut
soma += int.Parse(tempCpf[i].ToString()) * multiplicador1[i];
resto = (soma % 11);
resto = 11 - resto;
digito = resto.ToString();
// int.Parse: converteix la cadena digito en int per comparar
if (int.Parse(digito) > 9)
digito = "0";
tempCpf = tempCpf + digito;
if (!tempCpf.EndsWith(digito))
return false;
soma = 0;
for (int i = 0; i < 10; i++)
soma += int.Parse(tempCpf[i].ToString()) * multiplicador2[i];
resto = (soma % 11);
resto = 11 - resto;
digito = digito + resto.ToString();
if (int.Parse(digito) > 9)
digito = "0";
// Verifica si la variable cpf acaba amb el dígit trobat
return cpf.EndsWith(digito);
}
Formulari i esdeveniments
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (ValidaCpf(textBox1.Text))
{
MessageBox.Show("certo");
}
else
{
MessageBox.Show("errado");
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
Validació del CNPJ
public bool ValidaCnpj(string cnpj)
{
int[] multiplicador1 = new int[12] { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
int[] multiplicador2 = new int[13] { 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
int soma;
int resto;
string digito;
string tempCnpj;
cnpj = cnpj.Trim();
cnpj = cnpj.Replace(".", "").Replace("-", "").Replace("/", "");
if (cnpj.Length != 14)
return false;
tempCnpj = cnpj.Substring(0, 12);
soma = 0;
for (int i = 0; i < 12; i++)
soma += int.Parse(tempCnpj[i].ToString()) * multiplicador1[i];
resto = (soma % 11);
if (resto < 2)
resto = 0;
else
resto = 11 - resto;
digito = resto.ToString();
tempCnpj = tempCnpj + digito;
soma = 0;
for (int i = 0; i < 13; i++)
soma += int.Parse(tempCnpj[i].ToString()) * multiplicador2[i];
resto = (soma % 11);
if (resto < 2)
resto = 0;
else
resto = 11 - resto;
digito = digito + resto.ToString();
return cnpj.EndsWith(digito);
}