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
/** * Metodo para validar un nombre * */ try { Pattern pat;// = null; Matcher mat;// = null; pat= Pattern.compile("[a-zA-Z]+(\\s[a-zA-Z]*)*"); mat = pat.matcher(nombre); boolean encontro = mat.find(); //la cadena contiene el patron. if (encontro && (nombre.length() == mat.group().length())) { System.out.println("nombre.length():"+nombre.length()+", mat.group().length(): "+mat.group().length()); return true; } else { System.out.println("nombre.length():"+nombre.length()+", mat.group().length(): "+mat.group().length()); return false; } { "Nombre mal ingresado", "Error en analisis del nombre", return false; } }
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
esNombre("DebeRia ser TruE"); esNombre("DebeRia ser "); esNombre("DebeRia"); esNombre("DebeRia ser F@lse"); esNombre(" ser F@lse"); esNombre("Un nombre Cu@alquiera."); esNombre("Un $nombre Cu#alquiera."); }
aca van las salidas por consola
Código:
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.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
si se les ocurre como mejorarlo sera bien venido el comentario.
Saludos.