[Java] Uso de la clase Regex

Iniciado por /d3v/nu11, Abril 08, 2015, 08:23:38 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Les dejo este programa que hice para la uni. Lo que hace es comprobar mediante expresiones regulares si los datos introducidos son válidos, en caso de ser todos los campos válidos los añade a un fichero .csv y pregunta si sigue añadiendo o termina.

Código: java

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;

static String pedirNombre(){
boolean terminado = false;
String nombrepaciente = null;
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;
}

static String pedirDNI(){
boolean terminado = false;
String DNI = null;
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;
}

static String pedirSS(){
boolean terminado = false;
String SS = null;
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;
String fecha = null;
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;
}

static String pedirTLF(){
boolean terminado = false;
String TLF = null;
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;
}

static String pedirCIPSNS(){
boolean terminado = false;
String CIPSNS = null;
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;
}

static String pedirCITE(){
boolean terminado = false;
String CITE = null;
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;
String nombre = null;
String dni = null;
String ss = null;
String fecha = null;
String tlf = null;
String cipsns = null;
String cite = null;
StringBuffer sb = new StringBuffer();

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");
}
catch (IOException error) {
//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();
System.out.println("NC,DNINIE,NSS,FC,TEL,CIPNS,CITE");
System.out.println(sb);
}
}


Piensa por ti mismo y cuestiona a la autoridad.