Demo entry 6760397

CNPJ

   

Submitted by anonymous on Sep 14, 2018 at 05:41
Language: C#. Code size: 2.4 kB.

private bool validaCNPJ(string cnpj)
        {
            //CNPJ "chega" como string pois um CNPJ pode começar com zero

            //Remover .  /  <espaço> da string
            //Se precisar remover outros caracteres incluir entre [ ]
            cnpj = Regex.Replace(cnpj, "[ ./-]+", "");

            //Testar se o comprimento da string é 11 (todo cnpj deve ter 14 posições)
            if (cnpj.Length != 14)
            {
                throw new ArgumentException("CNPJ deve ter 14 posições!");
            }

            //Testar se todos os valores são dígitos
            if (!Regex.IsMatch(cnpj, ("[0-9]{14}")))
            {
                throw new ArgumentException("CNPJ deve ter apenas números!");
            }

            //Testar os cpf's inválidos 11111111111 ....
            if (Regex.IsMatch(cnpj, @"([0-9])\1{13}"))
            {
                throw new ArgumentException("CNPJ inválido de acordo com a Receita Federal!");
            }

            //Criar o array de números com base na string
            int[] iCNPJ = cnpj.Select(c => c - '0').ToArray();

            //Calcular o primeiro dígito

            int soma = 0;
            for (int i = 0; i < iCNPJ.Length-2; i++)
            {
                if (i < 4)
                    soma += iCNPJ[i] * (5 - i);
                else
                    soma += iCNPJ[i] * (13 - i);
            }
            int dig1 = soma % 11;
            if (dig1 < 2)
            {
                dig1 = 0;
            }
            else
            {
                dig1 = 11 - (soma % 11);
            }

            //Calcular o segundo dígito
            soma = 0;
            for (int i = 0; i < iCNPJ.Length-1; i++)
            {
                if (i < 5)
                    soma += iCNPJ[i] * (6 - i);
                else
                    soma += iCNPJ[i] * (14 - i);
            }
            int dig2 = soma % 11;
            if (dig2 < 2)
            {
                dig2 = 0;
            }
            else
            {
                dig2 = 11 - (soma % 11);
            }

            // Testa os dígitos verificadores calculados x informados
            if ((dig1 == iCNPJ[12]) && (dig2 == iCNPJ[13]))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).