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);

}

Entradas relacionadas: