Algoritmo de verificación de cuenta de banco válida
Este código realiza la verificación de si la cadena de entrada es una cuenta de banco válida, de 20 dÃgitos y con los dÃgitos de control correctos
?Ver código JAVA
public static boolean esCuentaBancaria (String cuenta){ _log.debug("Cuenta del Banco "+cuenta); Pattern cuentaPattern = Pattern.compile("\\d{20}"); Matcher m = cuentaPattern.matcher(cuenta); if(m.matches()){ _log.debug("cuenta cumple el patrón (20 dÃgitos)"); String banco = "00"+cuenta.substring(0,8); _log.debug("Banco (con 00) "+banco); int suma = Integer.parseInt(banco.substring(0,1))*1+ Integer.parseInt(banco.substring(1,2))*2+ Integer.parseInt(banco.substring(2,3))*4+ Integer.parseInt(banco.substring(3,4))*8+ Integer.parseInt(banco.substring(4,5))*5+ Integer.parseInt(banco.substring(5,6))*10+ Integer.parseInt(banco.substring(6,7))*9+ Integer.parseInt(banco.substring(7,8))*7+ Integer.parseInt(banco.substring(8,9))*3+ Integer.parseInt(banco.substring(9,10))*6; int control= 11 - (suma%11); _log.debug("control banco después del modulo 11 "+control); if (control==10) control=1; else if (control==11) control=0; _log.debug("control "+control ); int controlBanco = Integer.parseInt(cuenta.substring(8,9)); if (controlBanco!=control) return false; _log.debug("El control del banco está bien"); _log.debug("cuenta "+cuenta.substring(10,20)); suma = Integer.parseInt(cuenta.substring(10,11))*1+ Integer.parseInt(cuenta.substring(11,12))*2+ Integer.parseInt(cuenta.substring(12,13))*4+ Integer.parseInt(cuenta.substring(13,14))*8+ Integer.parseInt(cuenta.substring(14,15))*5+ Integer.parseInt(cuenta.substring(15,16))*10+ Integer.parseInt(cuenta.substring(16,17))*9+ Integer.parseInt(cuenta.substring(17,18))*7+ Integer.parseInt(cuenta.substring(18,19))*3+ Integer.parseInt(cuenta.substring(19,20))*6; control= 11 - (suma%11); _log.debug("control cuenta después del modulo 11 "+control); if (control==10) control=1; else if (control==11) control=0; _log.debug("control "+control); int controlcuenta = Integer.parseInt(cuenta.substring(9,10)); if (controlcuenta!=control) return false; else return true; } else return false; } |