Last active
March 8, 2024 03:00
-
-
Save ViCMAP/55260ffd138fe150040d to your computer and use it in GitHub Desktop.
Validación de cédula dominicana (Javascript)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script> | |
/* Modificacion del original en postingcode.com | |
* Agregado el control de variable cedulaValida y controlando ced.length a menor de 11 | |
* para los casos de cédulas sin guiones | |
* | |
* La cedula utilizada ES una cedula valida y asignada al ciudadano gerente de este script | |
* Modificación por Victor Abreu | www.vicabreu.com | |
* Nombre del archivo: ValidaCedulaDominicana.html | |
*/ | |
var cedulaValida = "00116454281"; | |
var cedulaNoValida = "00116454282"; | |
alert ("Cedula " + cedulaValida + ": " + valida_cedula(cedulaValida)); | |
alert ("Cedula " + cedulaValida + ": " + valida_cedula(cedulaNoValida)); | |
/* Validación de número de cédula dominicana | |
* con longitud de 11 caracteres numéricos o 13 caracteres incluyendo los dos guiones de presentación | |
* ejemplo sin guiones 00116454281, ejemplo con guiones 001-1645428-1 | |
* el retorno es 1 para el caso de cédula válida y 0 para la no válida | |
*/ | |
function valida_cedula(ced) { | |
var c = ced.replace(/-/g,''); | |
var cedula = c.substr(0, c.length - 1); | |
var verificador = c.substr(c.length - 1, 1); | |
var suma = 0; | |
var cedulaValida = 0; | |
if(ced.length < 11) { return false; } | |
for (i=0; i < cedula.length; i++) { | |
mod = ""; | |
if((i % 2) == 0){mod = 1} else {mod = 2} | |
res = cedula.substr(i,1) * mod; | |
if (res > 9) { | |
res = res.toString(); | |
uno = res.substr(0,1); | |
dos = res.substr(1,1); | |
res = eval(uno) + eval(dos); | |
} | |
suma += eval(res); | |
} | |
el_numero = (10 - (suma % 10)) % 10; | |
if (el_numero == verificador && cedula.substr(0,3) != "000") { | |
cedulaValida = 1; | |
} | |
else { | |
cedulaValida = 0; | |
} | |
return cedulaValida; | |
} | |
</script> |
He pasado el código para JAVA pero tiene un error de de valores si alguien lo logra solucionar le estaré sumamente agradecido
public boolean Validar_cedula(String ced) {
String c = ced.replace("-", "");
String cedula;
cedula = c.substring(0, 1 - c.length());
int verificador = Integer.parseInt(c.substring(c.length() - 1, 1)); //Aqui esta el error
int suma = 0;
boolean cedulaValida = false;
if (ced.length() < 11) {
return cedulaValida;
}
for (int i = 0; i < cedula.length(); i++) {
int mod = 0;
if ((i % 2) == 0) {
mod = 1;
} else {
mod = 2;
}
int res = Integer.parseInt(cedula.substring(i, 1)) * mod;
if (res > 9) {
String resString = String.valueOf(res);
String uno = resString.substring(0, 1);
String dos = resString.substring(1, 1);
res = Integer.parseInt(uno) + Integer.parseInt(dos);
}
suma += res;
}
int el_numero = (10 - (suma % 10)) % 10;
if (el_numero == verificador && cedula.substring(0, 3)!= "000") {
cedulaValida = true;
} else {
cedulaValida = false;
}
return cedulaValida;
}
No es mío pero aquí esta en código de JAVA:
public static boolean validarCedula(String cedula) { //Funciona
int suma = 0;
final char[] peso = {'1', '2', '1', '2', '1', '2', '1', '2', '1', '2'};
// Comprobaciones iniciales
if ((cedula == null) || (cedula.length() != 11)) {
return false;
}
// Si no es un nº => la descartamos
try {
Long.parseLong(cedula);
} catch (Exception e) {
return false;
}
for (int i = 0; i < 10; i++) {
int a = Character.getNumericValue(cedula.charAt(i));
int b = Character.getNumericValue(peso[i]);
char[] mult = Integer.toString(a * b).toCharArray();
if (mult.length > 1) {
a = Character.getNumericValue(mult[0]);
b = Character.getNumericValue(mult[1]);
} else {
a = 0;
b = Character.getNumericValue(mult[0]);
}
suma = suma + a + b;
}
int digito = (10 - (suma % 10)) % 10;
// Comprobamos que el dígito de control coincide
if (digito != Character.getNumericValue(cedula.charAt(10))) {
return false;
}
return true;
}
// Función para validar la cédula
function validarCedula(ced) {
// Eliminar guiones para obtener solo los números
var c = ced.replace(/-/g,'');
// Extraer el número de cédula sin el dígito verificador
var cedula = c.substr(0, c.length - 1);
// Obtener el dígito verificador
var verificador = c.substr(c.length - 1, 1);
// Inicializar la suma que se utilizará en el algoritmo
var suma = 0;
// Variable para almacenar la validez de la cédula (0 para no válida, 1 para válida)
var cedulaValida = 0;
// Verificar que la cédula tenga al menos 11 caracteres
if(ced.length < 11) {
return false;
}
// Iterar sobre cada dígito de la cédula
for (i=0; i < cedula.length; i++) {
// Determinar el factor multiplicador (1 para posición par, 2 para posición impar)
mod = "";
if((i % 2) == 0){
mod = 1;
} else {
mod = 2;
}
// Multiplicar el dígito por el factor
res = cedula.substr(i,1) * mod;
// Si el resultado es mayor a 9, sumar los dígitos individuales
if (res > 9) {
res = res.toString();
uno = res.substr(0,1);
dos = res.substr(1,1);
res = eval(uno) + eval(dos);
}
// Acumular la suma
suma += eval(res);
}
// Calcular el número que se debe agregar para llegar al siguiente múltiplo de 10
el_numero = (10 - (suma % 10)) % 10;
// Verificar si el número calculado coincide con el dígito verificador y que los primeros tres dígitos no sean "000"
if (el_numero == verificador && cedula.substr(0,3) != "000") {
cedulaValida = 1;
}
else {
cedulaValida = 0;
}
// Retornar la validez de la cédula
return cedulaValida;
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Excelente aporte, dejare el mismo codigo pero en c#
public static bool validar_cedula ( string ced)
{
var c = ced.Replace("-","");
var cedula = c.Substring(0, c.Length - 1);
var verificador = int.Parse(c.Substring(c.Length -1,1));
var suma = 0;
var cedulaValida = false;