Ejercicio 2 (2 Puntos)
Habrá que crear un programa que contenga un método estático validarNSS que validará un
número de la seguridad social. Se le pasará como parámetro (numeroSS) un String y devolverá
un booleano indicando si el código es correcto según el formato correspondiente.
El número de afiliación a la seguridad social consta de cuatro partes:
XX-aa-bbbbbbbb-cc
Los 2 primeros caracteres (XX) son letras cualesquiera del alfabeto.
Los 2 primeros dígitos (a) son un indicaivo de la provincia
Los 8dígitos centrales (b) son el nº del asegurado dentro de cada provincia.
Los 2 dígitos finales (c) son dígitos de control.
Cabe la posibilidad de que el número de la seguridad social se escriba sin guiones.
Los dígitos de control (c) se obtienen a partir de las otras dos partes (a) y (b) de la siguiente
forma:
si (b<10000000) entonces d= b + a * 10000000
si no d= valor numérico de (a concatenado con b)
c = d % 97 //resto de la división entera
----------------------------------------------------------------------------------------------------------------
public static boolean isNSS(String nss)
{
// String regEx = "^[A-Z]{2}-[0-9]{2}-[0-9]{8}-[0-9]{2}$";
String regex = "^[A-Z]{2}-[0-9]{2}-[0-9]{8}-[0-9]{2}$|^[A-Z]{2}[0-9]{12}$";
//String regEx = "^[A-Z]{2}-?[0-9]{2}-?[0-9]{8}-?[0-9]{2}$|^[A-Z]{2}[0-9]{12}$";
// String regex = "^[A-Z]{0,2}[0-9]{8}[A-Z]?$";
if (nss.matches(regex)) {
System.out.println("ESTOY POR AQUÍ");
nss = nss.replaceAll("-", "");
String a = nss.substring(0, 2);
String b = nss.substring(2, 4);
String c = nss.substring(4, 12);
// String num4 = nss.substring(12, 14);
String d = nss.substring(nss.length() - 2);
long num4Calc;
if (Integer.parseInt(c) < 10000000) {
num4Calc = Long.parseLong(c) + Long.parseLong(b) * 10000000;
} else {
System.out.println(b);
System.out.println(c);
num4Calc = Long.parseLong(b) + Long.parseLong(c);
System.out.println(num4Calc);
}
long validacion = num4Calc % 97;
String strnum4 = String.valueOf(validacion);
return strnum4.equals(d);
}
return false;
}