Created
December 4, 2015 05:43
-
-
Save yogonza524/b3b3cd2b9a999c461e6e to your computer and use it in GitHub Desktop.
Método que valida una cadena de caracteres segun el formato de CUIT utilizado en la Argentina
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
public static boolean validate(String cuit){ | |
//Eliminamos todos los caracteres que no son números | |
cuit = cuit.replaceAll("[^\\d]", ""); | |
//Controlamos si son 11 números los que quedaron, si no es el caso, ya devuelve falso | |
if (cuit.length() != 11){ | |
return false; | |
} | |
//Convertimos la cadena que quedó en una matriz de caracteres | |
String[] cuitArray = cuit.split(""); | |
//Inicializamos una matriz por la cual se multiplicarán cada uno de los dígitos | |
Integer[] serie = {5, 4, 3, 2, 7, 6, 5, 4, 3, 2}; | |
//Creamos una variable auxiliar donde guardaremos los resultados del calculo del número validador | |
Integer aux = 0; | |
//Recorremos las matrices de forma simultanea, sumando los productos de la serie por el número en la misma posición | |
for (int i=0; i<10; i++){ | |
aux += Integer.valueOf(cuitArray[i]) * serie[i]; | |
} | |
//Hacemos como se especifica: 11 menos el resto de de la división de la suma de productos anterior por 11 | |
aux = 11 - (aux % 11); | |
//Si el resultado anterior es 11 el código es 0 | |
if (aux == 11){ | |
aux = 0; | |
//o si el resultado anterior es 10 el código es 9 | |
} else if (aux == 10){ | |
aux = 9; | |
} | |
//Devuelve verdadero si son iguales, falso si no lo son | |
//(Esta forma esta dada para prevenir errores, se puede usar: return Integer.valueOf(cuitArray[11]) == aux;) | |
return Objects.equals(Integer.valueOf(cuitArray[10]), aux); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Se me rompe