· Andrés Ledo · NET  · Lectura en 2 min

C#: Validar DNI / NIF y calcular letra con .NET

Un proceso muy común en cualquier aplicación es validar si un DNI o NIF es válido. En el día de hoy veremos como podemos validar un número de DNI con C#.

Un proceso muy común en cualquier aplicación es validar si un DNI o NIF es válido. En el día de hoy veremos como podemos validar un número de DNI con C#.

Validar un DNI es muy sencillo, básicamente consta de 9 dígitos, 8 números y una letra de control para asegurarnos de que el usuario no se ha equivocado escribiéndolo. Recuerda que puedes validar un DNI online con mi herramienta.

Cómo calcular la letra de un DNI

Calcular la letra que hace de dígito de control es muy fácil, simplemente hay que hacer un mod del número de DNI dividido por 23, con el residuo de esta división calculamos el dígito de control mediante la siguiente tabla.

Tabla validación de DNI

Código fuente para validar DNI con .NET

static void Main(string[] args)
        {
            var result = CheckDNI("96913449M");
        }


//Devuelve true si es valido el DNI
static bool CheckDNI(string dni)
        {
            //Comprobamos si el DNI tiene 9 digitos
            if (dni.Length != 9)
            {
                //No es un DNI Valido
                return false;
            }
          
            //Extraemos los números y la letra
            string dniNumbers = dni.Substring(0, dni.Length - 1);
            string dniLeter = dni.Substring(dni.Length - 1, 1);
            //Intentamos convertir los números del DNI a integer
            var numbersValid = int.TryParse(dniNumbers, out int dniInteger);
            if (!numbersValid)
            {
                //No se pudo convertir los números a formato númerico
                return false;
            }
            if(CalculateDNILeter(dniInteger) != dniLeter)
            {
                //La letra del DNI es incorrecta
                return false;
            }
            //DNI Valido :)
            return true;
        }


static string CalculateDNILeter(int dniNumbers)
        {
            //Cargamos los digitos de control
            string[] control = { "T", "R", "W", "A", "G", "M", "Y", "F", "P", "D", "X", "B", "N", "J", "Z", "S", "Q", "V", "H", "L", "C", "K", "E" };
            var mod = dniNumbers % 23;
            return control[mod];
        }

Para acabar el artículo, si estás pensando en comprar hosting o en comprar dominio Web, déjame recomendarte estos artículos:

    Compartir
    Volver al blog

    Artículos relacionados

    Ver todos los artículos »
    Cómo Hacer un Update en SQL Server

    Cómo Hacer un Update en SQL Server

    La declaración UPDATE en SQL Server es fundamental para modificar datos existentes en una base de datos. Aprende cómo realizar actualizaciones...

    Validar DNI, NIE y CIF online

    Validar DNI, NIE y CIF online

    En España, validar la autenticidad de documentos como el DNI, NIE y CIF es crucial para cumplir con las regulaciones y prevenir fraudes. Las...

    Cómo instalar Laravel

    Cómo instalar Laravel

    Aprende instalar Laravel de una forma, rápida y simple. En este artículo te explico diversos métodos de instalación.

    Switch en C#: Guía Completa

    Switch en C#: Guía Completa

    La estructura switch ofrece una alternativa más limpia y organizada a múltiples if-else encadenados, permitiendo a los programadores gestionar varias...