Foros del Web » Programación para mayores de 30 ;) » Java »

Uso de clases Pattern y Matcher

Estas en el tema de Uso de clases Pattern y Matcher en el foro de Java en Foros del Web. Hola amigos, seguramente ya se hablo de esto, pero queria compartirlo y escuchar sugerencias. Toda la santa tarde me tomo lograr que me tomara como ...
  #1 (permalink)  
Antiguo 15/09/2013, 19:29
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 14 años, 1 mes
Puntos: 5
Uso de clases Pattern y Matcher

Hola amigos, seguramente ya se hablo de esto, pero queria compartirlo y escuchar sugerencias.
Toda la santa tarde me tomo lograr que me tomara como valida una cadena para validar nombres, solamente caracteres alfabeticos.
paso codico y escucho sugerencias.
Código Java:
Ver original
  1. /**
  2.      * Metodo para validar un nombre
  3.      * */
  4.     public static boolean esNombre (String nombre){
  5.         System.out.print("ESNOMBRE: ");
  6.       try {
  7.            Pattern pat;// = null;
  8.            Matcher mat;// = null;
  9.            pat= Pattern.compile("[a-zA-Z]+(\\s[a-zA-Z]*)*");
  10.            mat = pat.matcher(nombre);
  11.            boolean encontro = mat.find(); //la cadena contiene el patron.
  12.            System.out.print("encontro: "+encontro+"; ");
  13.                  
  14.            if (encontro && (nombre.length() == mat.group().length())) {
  15.                System.out.println("correcto: [" + mat.group() + "]"+nombre);
  16.                System.out.println("nombre.length():"+nombre.length()+", mat.group().length(): "+mat.group().length());
  17.                System.out.println("");
  18.                return true;
  19.            } else {
  20.             System.out.println("error de nombre: "+nombre);
  21.             System.out.println("nombre.length():"+nombre.length()+", mat.group().length(): "+mat.group().length());
  22.             System.out.println("");
  23.             return false;
  24.            }
  25.     } catch (Exception e)
  26.             {
  27.                         System.out.println("no es nombre: "+nombre);
  28.                         JFrame frame = new JFrame();
  29.                         JOptionPane.showMessageDialog(frame,
  30.                                 "Nombre mal ingresado",
  31.                                 "Error en analisis del nombre",
  32.                                 JOptionPane.WARNING_MESSAGE);
  33.                         return false;
  34.             }        
  35.     }

comparo la longitud del nombre ingresado con el que matchea porque lo que matchea es una subcadena de la cadena ingresada, y si tienen la misma longitud, es porque todo el nombre es correcto.

paso unas pruebas que hice.
Código Java:
Ver original
  1. public static void main(String[] args) {
  2.  
  3.         esNombre("DebeRia ser TruE");
  4.         esNombre("DebeRia ser ");
  5.         esNombre("DebeRia");
  6.         esNombre("DebeRia ser F@lse");
  7.         esNombre(" ser F@lse");
  8.         esNombre("Un nombre Cu@alquiera.");
  9.         esNombre("Un $nombre Cu#alquiera.");       
  10.     }

aca van las salidas por consola
Código:
ESNOMBRE: encontro: true; correcto: [DebeRia ser TruE]DebeRia ser TruE
nombre.length():16, mat.group().length(): 16

ESNOMBRE: encontro: true; correcto: [DebeRia ser ]DebeRia ser 
nombre.length():12, mat.group().length(): 12

ESNOMBRE: encontro: true; correcto: [DebeRia]DebeRia
nombre.length():7, mat.group().length(): 7

ESNOMBRE: encontro: true; error de nombre: DebeRia ser F@lse
nombre.length():17, mat.group().length(): 13

ESNOMBRE: encontro: true; error de nombre:  ser F@lse
nombre.length():10, mat.group().length(): 5

ESNOMBRE: encontro: true; error de nombre: Un nombre Cu@alquiera.
nombre.length():22, mat.group().length(): 12

ESNOMBRE: encontro: true; error de nombre: Un $nombre Cu#alquiera.
nombre.length():23, mat.group().length(): 3
espero le sirva a alguien, en si lo que intente hacer con este codigo es checkear una cadena si es una cadena valida evaluando un nombre. Ej: "Manuel Perez", "Manuel Ramon Perez", etc. tambien sirve para evaluar cualquier cadena de caracteres alfabeticos.

si se les ocurre como mejorarlo sera bien venido el comentario.
Saludos.

Etiquetas: clases, metodo, pattern, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:27.