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#.

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.

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. Más información.

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

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]; }
Lenguaje del código: C# (cs)

Deja un comentario