Regístrate para
recibir el boletín de
e-Contento.com. Ya somos 4.356 suscriptores. [+]

Listado de Artículos  
 Cálculo de la letra del NIF
Algoritmo implementado en JavaScript con dos funciones. Una que dado un DNI te calcula la letra del NIF y otra que dado un NIF comprueba si es correcto. La complejidad de las operaciones es ínfima, pero hay que saber cómo se calcula esa letrita dichosa.
Añadir a Gennio Añadir a del.icio.us Añadir a Digg Añadir a Meneame Añadir a Technorati Suscribir a Bloglines Suscribir a Netvibes Suscribir a Google Suscribir a Windows Live Suscribir a Mi Yahoo! Sindicación RSS. Feed


Creacion de una libreria para validar el NIF y el DNI
Autor: Juan Antonio Jimenez
Fecha: 2001 12 12

La letra del NIF se genera conociendo únicamente el número del DNI. Aplicándole a éste una serie de transformaciones (modulo 23), se obtiene un número entre 0 y 22 que se corresponde con una letra del siguiente array.

letras = new Array();
letras[0] = "T";
letras[1] = "R";
letras[2] = "W";
letras[3] = "A";
letras[4] = "G";
letras[5] = "M";
letras[6] = "Y";
letras[7] = "F";
letras[8] = "P";
letras[9] = "D";
letras[10] = "X";
letras[11] = "B";
letras[12] = "N";
letras[13] = "J";
letras[14] = "Z";
letras[15] = "S";
letras[16] = "Q";
letras[17] = "V";
letras[18] = "H";
letras[19] = "L";
letras[20] = "C";
letras[21] = "K";
letras[22] = "E";


Ahora vamos a ver una función que dado un DNI te devuelve el NIF, que es el DNI concatenado con una letra que obtenemos de la forma anterior. Al DNI le aplicamos una serie de comprobaciones para ver que es un número de a lo sumo 8 dígitos.

function nif(dni){
dni = parseInt(dni);
if (dni > 99999999){
alert("Error. El DNI sólo tiene 8 dígitos")
}else{
letraDNI = letras[dni % 23];
dni = dni.toString();
nif = dni + letraDNI;
return nif
}
}


Ahora vamos a ver una función que dado un NIF te devuelve true si es un NIF correcto y false si es incorrecto.

function esNIFCorrecto(nif){
txtError = "";
ok = true;

dni=nif.substring(0,nif.length-1);
dni=parseInt(dni);
letra=nif.charAt(nif.length-1);
letraCorrecta = letras[ dni % 23];

if (dni > 99999999){
txtError += "El DNI tiene a lo sumo 8 cifras\n";
ok = false;
} else if(letra<"a" || letra>"Z"){
txtError += "El último carácter debe ser una letra"
ok = false;
} else if(letra!=letraCorrecta) {
txtError += "La letra correcta del NIF para "
txtError += "ese DNI es " + letraCorrecta + "\n";
ok = false;
}

if (ok) {
return true;
}else{
alert(txtError);
return false;
}
}


Si quieres bajarte el código fuente comentado puedes hacerlo aquí.

Madrid a 13 de diciembre de 2001
Juan Antonio Jiménez



volver
 RECOMENDAMOS
La mejor novela de ciencia ficción española. Una historia optimista cuya trama transcurre en Españ:a en un futuro muy cercano. Probablemente la primera historia Solarpunk española

 MIS FOTOS...
Mutagenesis Convergente

 CITA
Nada es tan fuerte como la mansedumbre; nada es tan manso como la verdadera fortaleza. San Francisco de Sales

Cuando uno dice que sabe lo que es la felicidad, se puede suponer que la ha perdido. 



    He publicado un libro de ciencia ficción española