DiFalco 0 Denunciar post Postado Julho 28, 2005 alguém tem uma função em .Net para validar CPF ?????agradeço Compartilhar este post Link para o post Compartilhar em outros sites
rOcKLoCo 0 Denunciar post Postado Julho 28, 2005 /// <summary> /// Verifica se o CPF informado é válido /// </summary> /// <param name="cpf">CPF para validação</param> /// <returns>Retorna True caso seja válido</returns> public static bool ValidarCpf(string cpf) { cpf = cpf.Replace("-",""); cpf = cpf.Replace(".",""); Regex reg = new Regex(@"(^(\d{3}.\d{3}.\d{3}-\d{2})|(\d{11})$)"); if(!reg.IsMatch(cpf)) return false; int d1, d2; int soma = 0; string digitado = ""; string calculado = ""; // Pesos para calcular o primeiro digito int[] peso1 = new int[] {10, 9, 8, 7, 6, 5, 4, 3, 2}; // Pesos para calcular o segundo digito int[] peso2 = new int[] {11, 10, 9, 8, 7, 6, 5, 4, 3, 2}; int[] n = new int[11]; bool retorno = false; // Limpa a string cpf = cpf.Replace( ".", "" ).Replace( "-", "" ).Replace( "/", "" ).Replace( "\\", "" ); // Se o tamanho for < 11 entao retorna como inválido if( cpf.Length != 11 ) { return false; } // Caso coloque todos os numeros iguais switch( cpf ) { case "11111111111": return false; case "00000000000": return false; case "2222222222": return false; case "33333333333": return false; case "44444444444": return false; case "55555555555": return false; case "66666666666": return false; case "77777777777": return false; case "88888888888": return false; case "99999999999": return false; } try { // Quebra cada digito do CPF n[0] = Convert.ToInt32( cpf.Substring( 0,1 ) ); n[1] = Convert.ToInt32( cpf.Substring( 1,1 ) ); n[2] = Convert.ToInt32( cpf.Substring( 2,1 ) ); n[3] = Convert.ToInt32( cpf.Substring( 3,1 ) ); n[4] = Convert.ToInt32( cpf.Substring( 4,1 ) ); n[5] = Convert.ToInt32( cpf.Substring( 5,1 ) ); n[6] = Convert.ToInt32( cpf.Substring( 6,1 ) ); n[7] = Convert.ToInt32( cpf.Substring( 7,1 ) ); n[8] = Convert.ToInt32( cpf.Substring( 8,1 ) ); n[9] = Convert.ToInt32( cpf.Substring( 9,1 ) ); n[10]= Convert.ToInt32( cpf.Substring( 10,1 ) ); } catch { return false; } // Calcula cada digito com seu respectivo peso for( int i = 0; i <= peso1.GetUpperBound(0); i++ ) { soma += ( peso1[i] * Convert.ToInt32( n[i] ) ); } // Pega o resto da divisao int resto = soma % 11; if( resto == 1 || resto == 0 ) { d1 = 0; } else { d1 = 11 - resto; } soma = 0; // Calcula cada digito com seu respectivo peso for( int i = 0; i <= peso2.GetUpperBound(0); i++ ) { soma += ( peso2[i] * Convert.ToInt32( n[i] ) ); } // Pega o resto da divisao resto = soma % 11; if( resto == 1 || resto == 0 ) { d2 = 0; } else { d2 = 11 - resto; } calculado = d1.ToString() + d2.ToString(); digitado = n[9].ToString() + n[10].ToString(); // Se os ultimos dois digitos calculados bater com // os dois ultimos digitos do cpf entao é válido if( calculado == digitado ) { retorno = true; } else { retorno = false; } return retorno; } Compartilhar este post Link para o post Compartilhar em outros sites
DiFalco 0 Denunciar post Postado Julho 28, 2005 valeuzão rockloco...porém tem um prob.. eu to programando em VB.Net, quando eu "traduzi" do C# para VB teve uma classe q nao foi encontrada "Regex", o q seria isso ?????abraços Compartilhar este post Link para o post Compartilhar em outros sites
rOcKLoCo 0 Denunciar post Postado Julho 28, 2005 Regular Expression...use o seguinte namespaceImports System.Text.RegularExpressionsbeleza??Att,Carlos Compartilhar este post Link para o post Compartilhar em outros sites
DiFalco 0 Denunciar post Postado Julho 28, 2005 Valeu cara!!!!Funcionou blzinha!!!! Compartilhar este post Link para o post Compartilhar em outros sites
namio 0 Denunciar post Postado Julho 29, 2005 E aí, caro amigo.Enviei um e-mail para você com uma estrutura que desenvolvi para tratar números de CPF. Junto com a dll, enviei dois exemplos (um em VB e outro em C#) de como utilizá-la.Para os demais colegas que quiserem receber a dll, me comuniquem que eu a enviarei com prazer.Um forte abraçoNâmio Evangelista Cavalcante Compartilhar este post Link para o post Compartilhar em outros sites
Sahira 0 Denunciar post Postado Julho 11, 2007 Valeu cara!!!! Funcionou blzinha!!!! Oi, tudo bem? você pode me mostrar o código em .Net que você converteu? Valeus Compartilhar este post Link para o post Compartilhar em outros sites