-
-
Save adrianoluis/5043397d378ae506d87366abb0ab4e30 to your computer and use it in GitHub Desktop.
public class DocumentUtil { | |
// CPF | |
private static final int[] WEIGHT_SSN = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2}; | |
// CNPJ | |
private static final int[] WEIGHT_TFN = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}; | |
private static int sum(int[] weight, char[] numbers, int length) { | |
if (length <= 0) return 0; | |
final int nIdx = length - 1; | |
final int wIdx = weight.length > numbers.length ? length : nIdx; | |
return (sum(weight, numbers, nIdx) + Character.getNumericValue(numbers[nIdx]) * weight[wIdx]); | |
} | |
private static int calculate(final String document, final int[] weight) { | |
final char[] numbers = document.toCharArray(); | |
int sum = sum(weight, numbers, numbers.length); | |
sum = 11 - (sum % 11); | |
return sum > 9 ? 0 : sum; | |
} | |
private static boolean check(String tfn, int length, int[] weight) { | |
final String number = tfn.substring(0, length); | |
final int digit1 = calculate(number, weight); | |
final int digit2 = calculate(number + digit1, weight); | |
return tfn.equals(number + digit1 + digit2); | |
} | |
/** | |
* Valida CPF | |
*/ | |
public static boolean isValidSsn(String ssn) { | |
if (ssn == null || !ssn.matches("\\d{11}") || ssn.matches(ssn.charAt(0) + "{11}")) return false; | |
return check(ssn, 9, WEIGHT_SSN); | |
} | |
/** | |
* Valida CNPJ | |
*/ | |
public static boolean isValidTfn(String tfn) { | |
if (tfn == null || !tfn.matches("\\d{14}")) return false; | |
return check(tfn, 12, WEIGHT_TFN); | |
} | |
} |
Nota 10!
Valeu, cara. Ajudou muito!!
Maravilha, obrigado. Deus abençoe.
Muito Obrigado!
Obrigado por compartilhar, grande ajuda!
Valeu mesmo!
Thanks!
Top, ajudou muito!
Sensacional!
Obrigado!
muito obrigado maestro
Muito bom, obrigado por compartilhar!
Obrigado Guerrero, me ajudou muito no projeto do Nélio Alves.
Muito obrigado Luis, me ajudou bastante.
Obrigado!!!
top
Obrigado
Obrigado Luis, ajudou bastante.
Muito obrigado!
Até hoje ajudando muita gente, obrigado!
Muito obrigado
Obrigado! Estou vindo pelo curso do Nélio da Udemy. Valeu!
Muito obrigada, Luis!! Ajudou demais!!
Tks bro!
Obrigado em ajudar com seu conhecimento um abraço.
Passando pra agradecer tbm!
Passando pra deixar um SUPER obrigado!!!!!!!
Me salvou!
Eu também estou fazendo o curso do Prof. Nélio Alves lá na Udemy. Me ajudou e muito. Obrigado pelo código
Muito bom Obg!