help_outline
Ayudanos!
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Java] Uso de la clase Regex

  • 0 Respuestas
  • 1220 Vistas

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

Desconectado /d3v/nu11

  • *
  • Underc0der
  • Mensajes: 26
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Abril 08, 2015, 08:23:38 pm »
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
  1. import java.io.IOException;
  2. import java.util.Scanner;
  3. import java.util.regex.*;
  4.  
  5. public class ValidacionBOE {
  6.        
  7.         static Scanner leer = new Scanner(System.in);
  8.         static Matcher validador;
  9.         static Pattern patron;
  10.         static boolean ok;
  11.        
  12.         static String pedirNombre(){
  13.                 boolean terminado = false;
  14.                 String nombrepaciente = null;
  15.                 while (terminado == false){
  16.                         System.out.print("Nombre completo del paciente: ");
  17.                         nombrepaciente = leer.nextLine();
  18.                        
  19.                         // Validación de la expresión regular
  20.                         // Nombre Apellido1 Apellido2(opcional)
  21.                         patron = Pattern.compile("(\\p{Lu}\\p{Ll}+) +(\\p{Lu}\\p{Ll}+)( +\\p{Lu}\\p{Ll}+)?");
  22.                         validador = patron.matcher(nombrepaciente);
  23.                         ok = validador.matches();
  24.                          
  25.                         if (ok)
  26.                                 terminado = true;
  27.                         else
  28.                                 System.out.println("***Formato incorrecto***");
  29.                 }
  30.                 return nombrepaciente;
  31.         }
  32.        
  33.         static String pedirDNI(){
  34.                 boolean terminado = false;
  35.                 String DNI = null;
  36.                 while (terminado == false){
  37.                         System.out.print("DNI/NIE: ");
  38.                         DNI = leer.nextLine();
  39.                        
  40.                         // Validación de la expresión regular
  41.                         // 8 numeros 1 letraMayus
  42.                         // 1 letraMayus 7 numeros 1 letraMayus
  43.                         patron = Pattern.compile("\\d{8}\\p{Lu}|\\p{Lu}\\d{7}\\p{Lu}");
  44.                         validador.usePattern(patron);
  45.                         validador.reset(DNI);
  46.                         ok = validador.matches();
  47.                                                  
  48.                         if (ok)
  49.                                 terminado = true;
  50.                         else
  51.                                 System.out.println("***Formato incorrecto***");
  52.                 }
  53.                 return DNI;
  54.         }
  55.        
  56.         static String pedirSS(){
  57.                 boolean terminado = false;
  58.                 String SS = null;
  59.                 while (terminado == false){
  60.                         System.out.print("Número de la seguridad social: ");
  61.                         SS = leer.nextLine();
  62.                        
  63.                         // Validación de la expresión regular
  64.                         // Diferentes posibles números de seguridad social
  65.                         patron = Pattern.compile("(66|53|50|[0-4][0-9])-?\\d{8}-?\\d{2}");
  66.                         validador.usePattern(patron);
  67.                         validador.reset(SS);
  68.                         ok = validador.matches();
  69.                                                                          
  70.                         if (ok)
  71.                                 terminado = true;
  72.                         else
  73.                                 System.out.println("***Formato incorrecto***");
  74.                 }
  75.                 return SS;
  76.         }
  77.        
  78.         static String pedirFechaCaducidadTS(){
  79.                 boolean terminado = false;
  80.                 String fecha = null;
  81.                 while (terminado == false){
  82.                         System.out.print("Fecha de caducidad de la tarjeta sanitaria individual: ");
  83.                         fecha = leer.nextLine();
  84.                        
  85.                         // Validación de la expresión regular
  86.                         // mes/año
  87.                         patron = Pattern.compile("((0?[0-9])|([01][012]))/\\d\\d");
  88.                         validador.usePattern(patron);
  89.                         validador.reset(fecha);
  90.                         ok = validador.matches();
  91.                                                                          
  92.                         if (ok)
  93.                                 terminado = true;
  94.                         else
  95.                                 System.out.println("***Formato incorrecto***");
  96.                 }
  97.                 return fecha;
  98.         }
  99.        
  100.         static String pedirTLF(){
  101.                 boolean terminado = false;
  102.                 String TLF = null;
  103.                 while (terminado == false){
  104.                         System.out.print("Número de teléfono: ");
  105.                         TLF = leer.nextLine();
  106.                        
  107.                         // Validación de la expresión regular
  108.                         // 695 934 429
  109.                         // 654 23 24 24
  110.                         // +34 654234525
  111.                         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}))");
  112.                         validador.usePattern(patron);
  113.                         validador.reset(TLF);
  114.                         ok = validador.matches();
  115.                                                                          
  116.                         if (ok)
  117.                                 terminado = true;
  118.                         else
  119.                                 System.out.println("***Formato incorrecto***");
  120.                 }
  121.                 return TLF;
  122.         }
  123.        
  124.         static String pedirCIPSNS(){
  125.                 boolean terminado = false;
  126.                 String CIPSNS = null;
  127.                 while (terminado == false){
  128.                         System.out.print("Código CIPSNS: ");
  129.                         CIPSNS = leer.nextLine();
  130.                        
  131.                         // Validación de la expresión regular
  132.                         //1110123456789111
  133.                         patron = Pattern.compile("(\\d{3})\\d{10}\\1");
  134.                         validador.usePattern(patron);
  135.                         validador.reset(CIPSNS);
  136.                         ok = validador.matches();
  137.                                                                          
  138.                         if (ok)
  139.                                 terminado = true;
  140.                         else
  141.                                 System.out.println("***Formato incorrecto***");
  142.                 }
  143.                 return CIPSNS;
  144.         }
  145.        
  146.         static String pedirCITE(){
  147.                 boolean terminado = false;
  148.                 String CITE = null;
  149.                 while (terminado == false){
  150.                         System.out.print("Código CITE: ");
  151.                         CITE = leer.nextLine();
  152.                        
  153.                         // Validación de la expresión regular
  154.                         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");
  155.                         validador.usePattern(patron);
  156.                         validador.reset(CITE);
  157.                         ok = validador.matches();
  158.                                                                          
  159.                         if (ok)
  160.                                 terminado = true;
  161.                         else
  162.                                 System.out.println("***Formato incorrecto***");
  163.                 }
  164.                 return CITE;
  165.         }
  166.        
  167.         public static void main(String[] args) {
  168.                
  169.                 boolean terminado = false;
  170.                 String nombre = null;
  171.                 String dni = null;
  172.                 String ss = null;
  173.                 String fecha = null;
  174.                 String tlf = null;
  175.                 String cipsns = null;
  176.                 String cite = null;
  177.                 StringBuffer sb = new StringBuffer();
  178.                
  179.                 while (!terminado){
  180.                         nombre = pedirNombre();
  181.                         dni = pedirDNI();
  182.                         ss = pedirSS();
  183.                         fecha = pedirFechaCaducidadTS();
  184.                         tlf = pedirTLF();
  185.                         cipsns = pedirCIPSNS();
  186.                         cite = pedirCITE();
  187.                        
  188.                         // Escribimos y guardamos el fichero
  189.                         try {
  190.                                 LEfichero.escribirFichero("NC,DNINIE,NSS,FC,TEL,CIPNS,CITE"+System.getProperty("line.separator")
  191.                                                 +sb.append(nombre+","+dni+","+ss+","+fecha+","+tlf+","+cipsns+","+cite
  192.                                                                 +System.getProperty("line.separator")).toString(),"pacientes.csv");
  193.                                 }
  194.                         catch (IOException error) {
  195.                                         //captura excepción
  196.                                         System.out.println("***Error de escritura "+error);
  197.                                 }      
  198.                        
  199.                         // Comprobación de la respuesta
  200.                         boolean respuestaTerminada = false;
  201.                         while (!respuestaTerminada){
  202.                                 System.out.print("Pulse <S> salir o <A> añadir:");
  203.                                 String respuesta = leer.nextLine();
  204.                                
  205.                                 patron = Pattern.compile("S|A");
  206.                                 validador.usePattern(patron);
  207.                                 validador.reset(respuesta);
  208.                                 ok = validador.matches();
  209.                                         if (ok && respuesta.equals("S")){
  210.                                                 respuestaTerminada = true;
  211.                                                 terminado = true;
  212.                                         }
  213.                                         else if (ok && respuesta.equals("A"))
  214.                                                 respuestaTerminada = true;
  215.                                         else
  216.                                                 System.out.println("Respuesta incorrecta");
  217.                         }
  218.                 }
  219.                
  220.                 leer.close();
  221.                
  222.                 System.out.println("SALIDA pacientes.csv:");
  223.                 System.out.println();
  224.                 System.out.println("NC,DNINIE,NSS,FC,TEL,CIPNS,CITE");
  225.                 System.out.println(sb);
  226.         }
  227. }
  228.  


Piensa por ti mismo y cuestiona a la autoridad.

 

¿Te gustó el post? COMPARTILO!



[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 1810
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
[LIBRO] Programación avanzada en Java - Sonia Jaramillo Valbuena

Iniciado por graphixx

Respuestas: 4
Vistas: 3987
Último mensaje Noviembre 09, 2018, 09:07:14 am
por ivaneliascalu
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 5339
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 2431
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
[Java] Chat utilizando WebSockets con JavaEE y JavaFx

Iniciado por coke951

Respuestas: 3
Vistas: 3601
Último mensaje Diciembre 23, 2016, 10:23:24 pm
por coke951