import java.io.IOException;
import java.util.Scanner;
import java.util.regex.*;
public class ValidacionBOE {
static Scanner leer
= new Scanner
(System.
in); static Matcher validador;
static Pattern patron;
static boolean ok;
boolean terminado = false;
while (terminado == false){
System.
out.
print("Nombre completo del paciente: "); nombrepaciente = leer.nextLine();
// Validación de la expresión regular
// Nombre Apellido1 Apellido2(opcional)
patron = Pattern.compile("(\\p{Lu}\\p{Ll}+) +(\\p{Lu}\\p{Ll}+)( +\\p{Lu}\\p{Ll}+)?");
validador = patron.matcher(nombrepaciente);
ok = validador.matches();
if (ok)
terminado = true;
else
System.
out.
println("***Formato incorrecto***"); }
return nombrepaciente;
}
boolean terminado = false;
while (terminado == false){
System.
out.
print("DNI/NIE: "); DNI = leer.nextLine();
// Validación de la expresión regular
// 8 numeros 1 letraMayus
// 1 letraMayus 7 numeros 1 letraMayus
patron = Pattern.compile("\\d{8}\\p{Lu}|\\p{Lu}\\d{7}\\p{Lu}");
validador.usePattern(patron);
validador.reset(DNI);
ok = validador.matches();
if (ok)
terminado = true;
else
System.
out.
println("***Formato incorrecto***"); }
return DNI;
}
boolean terminado = false;
while (terminado == false){
System.
out.
print("Número de la seguridad social: "); SS = leer.nextLine();
// Validación de la expresión regular
// Diferentes posibles números de seguridad social
patron = Pattern.compile("(66|53|50|[0-4][0-9])-?\\d{8}-?\\d{2}");
validador.usePattern(patron);
validador.reset(SS);
ok = validador.matches();
if (ok)
terminado = true;
else
System.
out.
println("***Formato incorrecto***"); }
return SS;
}
static String pedirFechaCaducidadTS
(){ boolean terminado = false;
while (terminado == false){
System.
out.
print("Fecha de caducidad de la tarjeta sanitaria individual: "); fecha = leer.nextLine();
// Validación de la expresión regular
// mes/año
patron = Pattern.compile("((0?[0-9])|([01][012]))/\\d\\d");
validador.usePattern(patron);
validador.reset(fecha);
ok = validador.matches();
if (ok)
terminado = true;
else
System.
out.
println("***Formato incorrecto***"); }
return fecha;
}
boolean terminado = false;
while (terminado == false){
System.
out.
print("Número de teléfono: "); TLF = leer.nextLine();
// Validación de la expresión regular
// 695 934 429
// 654 23 24 24
// +34 654234525
patron = Pattern.compile("(\\(\\+\\d{1,3}\\)|(\\+\\d{1,3} ))?((\\d{3} \\d{3} \\d{3})|(\\d{9})|(\\d{3} \\d{2} \\d{2} \\d{2}))");
validador.usePattern(patron);
validador.reset(TLF);
ok = validador.matches();
if (ok)
terminado = true;
else
System.
out.
println("***Formato incorrecto***"); }
return TLF;
}
boolean terminado = false;
while (terminado == false){
System.
out.
print("Código CIPSNS: "); CIPSNS = leer.nextLine();
// Validación de la expresión regular
//1110123456789111
patron = Pattern.compile("(\\d{3})\\d{10}\\1");
validador.usePattern(patron);
validador.reset(CIPSNS);
ok = validador.matches();
if (ok)
terminado = true;
else
System.
out.
println("***Formato incorrecto***"); }
return CIPSNS;
}
boolean terminado = false;
while (terminado == false){
System.
out.
print("Código CITE: "); CITE = leer.nextLine();
// Validación de la expresión regular
patron = Pattern.compile("80(AFG|ALA|ALB|DEU|AND|AGO|AIA|ATA|ATG|SAU|DZA|ARG|ARM|ABW|AUS|AUT|AZE|BHS|BGD|BRB|BHR|BEL|BLZ|BEN|BMU|BLR|MMR|BOL|BIH|BWA|BRA|BRN|BGR|BFA|BDI|BTN|CPV|KHM|ZMR|CAN|UAT|BES|TCD|CHL|CHN|CIP|COL|COM|PRK|KOR|CIV|CRI|HRV|CUB|CUW|DNK|DMA|ECU|EGY|SLV|ARE|ERI|SVK|SVN|ESP|USA|EST|ETH|PHL|FIN|FJI|FRA|GAB|GMB|GEO|GHA|GIB|GRD|GRC|GRL|GLP|GUM|GTM|GUF|GGY|GIN|GNB|GNQ|GUI|HTI|HND|HKG|IND|IDN|IRQ|IRN|IRL|BVT|IMN|CXR|NFK|ISL|CYM|COK|FRO|SGS|HMD|FLK|MNP|MHL|PCN|SLB|TCA|UMI|VGB|VIR|ISR|ITA|JAM|JPN|JEY|JOR|KAZ|KEN|KGZ|KIR|KWT|LAO|LSO|LVA|LBN|LDR|LBY|LIE|LTU|LUX|MAC|MDG|MYS|MWI|MDV|MLI|MLT|MAR|MTQ|MUS|MRT|MYT|MEX|FSM|MDA|MCO|MNG|MNE|MSR|MOZ|NAM|NRU|NPL|NIC|NER|NGA|NIU|NOR|NCL|NZL|OMN|NLD|PAK|PLW|PSE|PAN|PNG|PRY|PER|PIF|POL|PRT|PRI|GBR|CAF|CZE|MKD|COG|COD|DOM|REU|RWA|ROU|RUS|ESH|WSM|ASM|BLM|KNA|SMR|MAF|SPM|VCT|SHN|LCA|STP|SEN|SRB|SYC|SLE|SGP|SXM|SYM|SOM|LKA|SWZ|ZAF|SDN|SSD|SWE|CHE|SUR|SJM|THA|TWN|TZA|TJK|IOT|ATF|TLS|TGO|TKL|TON|TTO|TUN|TKM|TUR|TUV|UKR|UGA|URY|UZB|VUT|VAT|VEN|VNM|WLF|YEM|DJI|ZMB|ZWE)\\d{2}(\\d)\\d{2}\\2");
validador.usePattern(patron);
validador.reset(CITE);
ok = validador.matches();
if (ok)
terminado = true;
else
System.
out.
println("***Formato incorrecto***"); }
return CITE;
}
public static void main
(String[] args
) {
boolean terminado = false;
while (!terminado){
nombre = pedirNombre();
dni = pedirDNI();
ss = pedirSS();
fecha = pedirFechaCaducidadTS();
tlf = pedirTLF();
cipsns = pedirCIPSNS();
cite = pedirCITE();
// Escribimos y guardamos el fichero
try {
LEfichero.
escribirFichero("NC,DNINIE,NSS,FC,TEL,CIPNS,CITE"+System.
getProperty("line.separator") +sb.append(nombre+","+dni+","+ss+","+fecha+","+tlf+","+cipsns+","+cite
+System.
getProperty("line.separator")).
toString(),
"pacientes.csv"); }
//captura excepción
System.
out.
println("***Error de escritura "+error
); }
// Comprobación de la respuesta
boolean respuestaTerminada = false;
while (!respuestaTerminada){
System.
out.
print("Pulse <S> salir o <A> añadir:"); String respuesta
= leer.
nextLine();
patron = Pattern.compile("S|A");
validador.usePattern(patron);
validador.reset(respuesta);
ok = validador.matches();
if (ok && respuesta.equals("S")){
respuestaTerminada = true;
terminado = true;
}
else if (ok && respuesta.equals("A"))
respuestaTerminada = true;
else
System.
out.
println("Respuesta incorrecta"); }
}
leer.close();
System.
out.
println("SALIDA pacientes.csv:"); System.
out.
println("NC,DNINIE,NSS,FC,TEL,CIPNS,CITE"); }
}