none
Validação de CPF e CNPJ RRS feed

  • Pergunta

  • Preciso de um algoritimo para validar CPF e outro para validar CNPJ. Alguém pode me socorrer???? Estou usando C#

    Atenciosamente

     

    quarta-feira, 4 de outubro de 2006 14:00

Todas as Respostas

  • Fernanda Bom dia,

    Método para validar CNPJ:

    private bool TestaCnpj(string Cnpj)

    {

    Cnpj_1 = Cnpj.Substring(0, 12);

    Cnpj_2 = Cnpj.Substring(Cnpj.Length - 2);

    Mult = "543298765432";

    Controle = String.Empty;

    for (int j = 1; j < 3; j++)

    {

    Soma = 0;

    for (int i = 0; i < 12; i++)

    // {

    Soma += Convert.ToInt32(Cnpj_1.Substring(i, 1)) *

    Convert.ToInt32(Mult.Substring(i, 1));

    // }

    if (j == 2) Soma += (2 * Digito);

    Digito = ((Soma * 10) % 11);

    if (Digito == 10) Digito = 0;

    Controle = Controle + Digito.ToString();

    Mult = "654329876543";

    }

    MessageBox.Show(Controle);

    if (Controle != Cnpj_2)

    {

    return false;

    }

    else

    {

    return true;

    }

    }

    Para o CPF:

    private 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 };

    string tempCpf;

    string digito;

    int soma;

    int resto;

    cpf = cpf.Trim();

    cpf = cpf.Replace(".", "").Replace("-", "");

    if (cpf.Length != 11)

    return false;

    tempCpf = cpf.Substring(0, 9);

    soma = 0;

    for (int i = 0; i < 9; i++)

    soma += int.Parse(tempCpfIdea.ToString()) * multiplicador1Idea;

    resto = soma % 11;

    if ( resto < 2 )

    resto = 0;

    else

    resto = 11 - resto;

    digito = resto.ToString();

    tempCpf = tempCpf + digito;

    soma = 0;

    for(int i=0; i<10; i++)

    soma += int.Parse(tempCpfIdea.ToString()) * multiplicador2Idea;

    resto = soma % 11;

    if (resto < 2)

    resto = 0;

    else

    resto = 11 - resto;

    digito = digito + resto.ToString();

    return cpf.EndsWith(digito);

    }

    }

    }

    Dentro do Método Cnpj vc. também poderá usar o replace para tirar os pontos e barras do Cnpj, que tem no método CPF, caso seja necessário.

    quarta-feira, 4 de outubro de 2006 14:21
  • Oi, testei os dois e nenhum funcionou, no primeiro nao foi colocado os tipos das variaveis dai coloquei uns tipos que achei correto mas nao funcionou e no outro tem aquela figurinha da lampada q nao sei o que é dai ta dando erro nessas linhas tbém

    Se puder me ajudar, agradeço

    quarta-feira, 4 de outubro de 2006 19:43
  • Fernanda, as variáveis vc. pode declarar fora dos métodos, assim :

    // Vari veis do M‚todo CNPJ

    string _Cnpj;

    string Cnpj_1;

    string Cnpj_2;

    int Soma;

    int Digito = 0;

    string Controle;

    string Mult;

    // varo veis do M‚todo CPF

    private int soma;

    private int Resultado;

    Só para testar, no formulário coloque um botão para CNPJ e outro para o CPF e um textBox.

    para o do Cnpj

    private void button1_Click(object sender, EventArgs e)

    {

     

    string _Cnpj = txtCpf.Text;

    if (TestaCnpj(_Cnpj))

    {

    MessageBox.Show("Cnpj verdadeiro");

    }

    else

    {

    MessageBox.Show("Cnpj falso");

    }

    }

    Para o button do Cpf.

    private void btnValidaCpf_Click(object sender, EventArgs e)

    {

    string CPF = txtCpf.Text;

    if(ValidaCpf(CPF))

    {

    MessageBox.Show("Cpf Valido !");

    }

    else

    {

    MessageBox.Show("CPF invalido ");

    }

    }

    Agora vou passar o código completo do Método valida CPF

    private bool ValidaCpf(string cpf)

    {

    int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 };

    // string Mult1 = "1098765432";

    int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };

    string tempCpf;

    string digito;

    int soma;

    int resto;

    cpf = cpf.Trim();

    cpf = cpf.Replace(".", "").Replace("-", "");

    if (cpf.Length != 11)

    return false;

    tempCpf = cpf.Substring(0, 9);

    soma = 0;

    for (int i = 0; i < 9; i++)

    soma += int.Parse(tempCpfIdea.ToString()) * multiplicador1Idea;

    // soma += Convert.ToInt32(tempCpf.Substring(i, 1)) * multiplicador1Idea;

    resto = soma % 11;

    if ( resto < 2 )

    resto = 0;

    else

    resto = 11 - resto;

    digito = resto.ToString();

    tempCpf = tempCpf + digito;

    soma = 0;

    for(int i=0; i<10; i++)

    soma += int.Parse(tempCpfIdea.ToString()) * multiplicador2Idea;

    resto = soma % 11;

    if (resto < 2)

    resto = 0;

    else

    resto = 11 - resto;

    digito = digito + resto.ToString();

    return cpf.EndsWith(digito);

    }

    }

    }

     

    quinta-feira, 5 de outubro de 2006 12:17
  • Fernanda, as variáveis vc. pode declarar fora dos métodos, assim :

    // Vari veis do M‚todo CNPJ

    string _Cnpj;

    string Cnpj_1;

    string Cnpj_2;

    int Soma;

    int Digito = 0;

    string Controle;

    string Mult;

    // varo veis do M‚todo CPF

    private int soma;

    private int Resultado;

    Só para testar, no formulário coloque um botão para CNPJ e outro para o CPF e um textBox.

    para o do Cnpj

    private void button1_Click(object sender, EventArgs e)

    {

     

    string _Cnpj = txtCpf.Text;

    if (TestaCnpj(_Cnpj))

    {

    MessageBox.Show("Cnpj verdadeiro");

    }

    else

    {

    MessageBox.Show("Cnpj falso");

    }

    }

    Para o button do Cpf.

    private void btnValidaCpf_Click(object sender, EventArgs e)

    {

    string CPF = txtCpf.Text;

    if(ValidaCpf(CPF))

    {

    MessageBox.Show("Cpf Valido !");

    }

    else

    {

    MessageBox.Show("CPF invalido ");

    }

    }

    Agora vou passar o código completo do Método valida CPF

    private bool ValidaCpf(string cpf)

    {

    int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 };

    // string Mult1 = "1098765432";

    int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };

    string tempCpf;

    string digito;

    int soma;

    int resto;

    cpf = cpf.Trim();

    cpf = cpf.Replace(".", "").Replace("-", "");

    if (cpf.Length != 11)

    return false;

    tempCpf = cpf.Substring(0, 9);

    soma = 0;

    for (int i = 0; i < 9; i++)

    soma += int.Parse(tempCpfIdea.ToString()) * multiplicador1Idea;

    // soma += Convert.ToInt32(tempCpf.Substring(i, 1)) * multiplicador1Idea;

    resto = soma % 11;

    if ( resto < 2 )

    resto = 0;

    else

    resto = 11 - resto;

    digito = resto.ToString();

    tempCpf = tempCpf + digito;

    soma = 0;

    for(int i=0; i<10; i++)

    soma += int.Parse(tempCpfIdea.ToString()) * multiplicador2Idea;

    resto = soma % 11;

    if (resto < 2)

    resto = 0;

    else

    resto = 11 - resto;

    digito = digito + resto.ToString();

    return cpf.EndsWith(digito);

    }

    }

    }

     

    quinta-feira, 5 de outubro de 2006 12:17
  • Não sei o porquê daquelas luzes atrapalhando visualizar o código.

    Vamos ver se agora não aparecem:

    soma += int.Parse(tempCpf[1].ToString()) * multiplicador1[1];

    // soma += int.Parse(tempCpfIdea.ToString()) * multiplicador1Idea

    quinta-feira, 5 de outubro de 2006 12:42
  • Olá, Fernanda! Segue uma classe de validação que eu criei:

     

    public class ValidacaoCPF

       {

          public void CPFValido(decimal Cpf, out bool valido)

          {

             string cpfFormatado = string.Empty;

             cpfFormatado = Cpf.ToString().Trim();

              for (int i = 0; i < (11 - Cpf.ToString().Trim().Length); i++)

             {

                cpfFormatado = "0" + cpfFormatado;

             }

             CPFValido(cpfFormatado, out valido);

          }

     

          public void CPFValido(string strCpf, out bool valido)

          {

             int d1, d2;

             int digito1, digito2, resto;

             int digitoCPF;

             string nDigResult;

             string valorCpf;

             valorCpf = strCpf.Replace(".", "");

             valorCpf = valorCpf.Replace("-", "");

             valorCpf = valorCpf.Replace(",", "");

     

             d1 = d2 = 0;

             digito1 = digito2 = resto = 0;

     

             for (int nCount = 1; nCount < valorCpf.Length - 1; nCount++)

             {

                digitoCPF = Convert.ToInt32(valorCpf.Substring(nCount - 1, 1));

     

                //multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.

                d1 = d1 + (11 - nCount) * digitoCPF;

     

                //para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.

                d2 = d2 + (12 - nCount) * digitoCPF;

             };

     

             //Primeiro resto da divisão por 11.

             resto = (d1 % 11);

     

             //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.

             if (resto < 2)

                digito1 = 0;

             else

                digito1 = 11 - resto;

     

             d2 += 2 * digito1;

     

             //Segundo resto da divisão por 11.

             resto = (d2 % 11);

     

             //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.

             if (resto < 2)

                digito2 = 0;

             else

                digito2 = 11 - resto;

     

             //Digito verificador do CPF que está sendo validado.

             String nDigVerific = valorCpf.Substring(valorCpf.Length - 2, 2);

     

             //Concatenando o primeiro resto com o segundo.

             nDigResult = digito1.ToString() + digito2.ToString();

     

             //comparar o digito verificador do cpf com o primeiro resto + o segundo resto.

             valido = nDigVerific.Equals(nDigResult);

          }

       }

    quinta-feira, 5 de outubro de 2006 20:57
  • Tenta essa regular expression

    (^(\d{2}.\d{3}.\d{3}/\d{4}-\d{2})|(\d{14})$)|(^(\d{3}.\d{3}.\d{3}-\d{2})|(\d{11})$

    sábado, 7 de outubro de 2006 00:18