Esta implementación del algoritmo Módulo 11 en Java es compatible con Spring Boot, Android y cualquier proyecto Java estándar.
public class RutValidator {
public static String calcularDV(String cuerpo) {
int[] serie = {2, 3, 4, 5, 6, 7};
String invertido = new StringBuilder(cuerpo).reverse().toString();
int suma = 0;
for (int i = 0; i < invertido.length(); i++) {
suma += Character.getNumericValue(invertido.charAt(i)) * serie[i % 6];
}
int resto = 11 - (suma % 11);
if (resto == 11) return "0";
if (resto == 10) return "K";
return String.valueOf(resto);
}
public static boolean validarRut(String rut) {
String clean = rut.replaceAll("[^0-9kK]", "").toUpperCase();
if (clean.length() < 2) return false;
String cuerpo = clean.substring(0, clean.length() - 1);
String dv = clean.substring(clean.length() - 1);
return calcularDV(cuerpo).equals(dv);
}
public static void main(String[] args) {
System.out.println(validarRut("12.345.678-5")); // true
System.out.println(validarRut("12345678-9")); // false
}
}
Preguntas frecuentes
¿Esta clase funciona con Spring Validation?
Sí. Puedes crear una anotación @ValidRut personalizada que internamente llame a RutValidator.validarRut().