Dígito verificador do CPF em C# (CSharp)
Postado em : 23/11/2015
Classe para validação e cálculo do dígito verificador do CPF
Para validar o digito do CPF basta chamar a função :
ValidaDigitoCPF.ValidaCPF(cpf)
Onde o valor pode ser uminteiro
ou umastring
com o número doCPF
completo com o dígito A função retorna umboolean
comTrue
se o CPF é válido ouFalse
se o CPF não é válido
Para calcular o dígito do CPF basta chamar a função :
ValidaDigitoCPF.CalculaDigCPF(cpf)
Onde o valor pode ser uminteiro
ou umastring
com o número doCPF
sem o dígito verificador A função retorna umastring
com o dígito verificador do CPF, caso o valor informado tenha mais de 9 dígitos retorna nulo
Se preferir no final desta postagem você encontra o link para baixar no GitHubum pequeno projeto com exemplo de uso da classe.
Crie uma classe em seu projeto com o nome de ValidaDigitoCPF.cs
e cole o código abaixo.
/* * Valida e Calcula digito verificador de um CPF. * * Visite nossa página http://www.codigoexpresso.com.br * * by Antonio Azevedo * * public static Boolean ValidaCPF(cpf) * Valida se o digito do CPF é valido * Pode-se informar um valor inteiro ou uma string com o numero completo do CPF contendo o Digito * Exemplo '123.456.789-10' * * public static string CalculaDigCPF(cpf) * Calcula o digito do CPF informado * Pode-se informar um valor inteiro ou uma string com o numero do CPF sem o Digito * Exemplo '123.456.789' * */ using System; using System.Collections.Generic; using System.Linq; using System.Text; public static class ValidaDigitoCPF { /// <summary> /// Informar um CPF completo para validação do digito verificador /// </summary> /// <param name="cpf">Int64 com o numero CPF completo com Digito</param> /// <returns>Boolean True/False onde True=Digito CPF Valido</returns> public static Boolean ValidaCPF(Int64 cpf) { return ValidaCPF(cpf.ToString("D11")); } /// <summary> /// Informar um CPF completo para validação do digito verificador /// </summary> /// <param name="cpf">string com o numero CPF completo com Digito</param> /// <returns>Boolean True/False onde True=Digito CPF Valido</returns> public static Boolean ValidaCPF(string cpf) { // Declara variaveis para uso string new_cpf = ""; // Retira carcteres invalidos não numericos da string for (int i = 0; i < cpf.Length; i++) { if (isDigito(cpf.Substring(i, 1))) { new_cpf += cpf.Substring(i, 1); } } // Ajusta o Tamanho do CPF para 11 digitos considerando o digito verificador e completando com zeros a esquerda new_cpf = Convert.ToInt64(new_cpf).ToString("D11"); // Verifica se o cpf informado tem os 11 digitos if (new_cpf.Length > 11) { return false; } // Calcula o digito do CPF e compara com o digito informado if (CalculaDigCPF(new_cpf.Substring(0, 9)) == new_cpf.Substring(9, 2)) { return true; } return false; } /// <summary> /// Calcula o Digito verificador de um CPF informado /// </summary> /// <param name="cpf">int64 com o CPF contendo 9 digitos e sem o digito verificador</param> /// <returns>string com o digito calculado do CPF ou null caso o cpf informado for maior que 9 digitos</returns> public static string CalculaDigCPF(Int64 cpf) { return CalculaDigCPF(cpf.ToString("D9")); } /// <summary> /// Calcula o Digito verificador de um CPF informado /// </summary> /// <param name="cpf">string com o CPF contendo 9 digitos e sem o digito verificador</param> /// <returns>string com o digito calculado do CPF ou null caso o cpf informado for maior que 9 digitos</returns> public static string CalculaDigCPF(string cpf) { // Declara variaveis para uso string new_cpf =""; string digito = ""; Int32 Aux1 = 0; Int32 Aux2 = 0; // Retira carcteres invalidos não numericos da string for (int i =0;i<cpf.Length;i++) { if(isDigito(cpf.Substring(i,1))) { new_cpf += cpf.Substring(i, 1); } } // Ajusta o Tamanho do CPF para 9 digitos completando com zeros a esquerda new_cpf = Convert.ToInt64(new_cpf).ToString("D9"); // Caso o tamanho do CPF informado for maior que 9 digitos retorna nulo if (new_cpf.Length > 9) { return null; } // Calcula o primeiro digito do CPF Aux1 = 0; for (int i = 0; i < new_cpf.Length; i++) { Aux1 += Convert.ToInt32(new_cpf.Substring(i, 1)) * (10-i); } Aux2 = 11 - (Aux1 % 11); // Carrega o primeiro digito na variavel digito if (Aux2 > 9) { digito += "0"; } else { digito += Aux2.ToString(); } // Adiciona o primeiro digito ao final do CPF para calculo do segundo digito new_cpf += digito; // Calcula o segundo digito do CPF Aux1 = 0; for (int i = 0; i < new_cpf.Length; i++) { Aux1 += Convert.ToInt32(new_cpf.Substring(i, 1)) * (11 - i); } Aux2 = 11 - (Aux1 % 11); // Carrega o segundo digito na variavel digito if (Aux2 > 9) { digito += "0"; } else { digito += Aux2.ToString(); } return digito; } /// <summary> /// Verifica se um digito informado é um numero /// </summary> /// <param name="digito">string com um caracter para verificar se é um numero</param> /// <returns>Boolean True/False</returns> private static Boolean isDigito(string digito) { int n; return Int32.TryParse(digito, out n); } }
Links Relacionados
- Atributo para validar Datas utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp).
- Atributo para validar E-mails utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp)
- Atributo para validar Horas utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp)
- Atributo para validar Números utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp)
- Atributo para validar Senhas utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp).
- Aula 07 - Validação com Data Annotation (Parte 04) / Validação Remota (Attribute Remote) em Asp.Net MVC 4 com C#(CSharp)
- Aula 08 - Validação com Data Annotation (Parte 05) / Validação E-mail, Senha e Atributo Compare, Ignora Validações em Asp.Net MVC 4 com C#(CSharp)
- Cálculo de dígito verificador Módulo Base 10 e 11 em C# (CSharp)
- Data Annotation em C# (CSharp)
- Dígito verificador do CNPJ em C# (CSharp)
- Exemplo de Stored Procedure com tratamento de erros e transação. (SqlServer)
- Expressões Regulares [RegularExpression]
- Formatar CNPJ e CPF em C# (CSharp)
- Ignorar validações em Data Annotation em C# (CSharp)
- ModelBinder - Customizando o vinculo do Modelo com o HTML em Asp.Net MVC 4 com C# (CSharp)
- Protegendo seu site de ataques (CSRF ) com ValidateAntiForgeryToken Asp.Net MVC4 com C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)