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/**
* Metodo para validar un nombre
* */
public static boolean esNombre
(String nombre
){ System.
out.
print("ESNOMBRE: "); 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.
System.
out.
print("encontro: "+encontro
+"; ");
if (encontro && (nombre.length() == mat.group().length())) {
System.
out.
println("correcto: [" + mat.
group() + "]"+nombre
); System.
out.
println("nombre.length():"+nombre.
length()+", mat.group().length(): "+mat.
group().
length()); return true;
} else {
System.
out.
println("error de nombre: "+nombre
); System.
out.
println("nombre.length():"+nombre.
length()+", mat.group().length(): "+mat.
group().
length()); return false;
}
{
System.
out.
println("no es nombre: "+nombre
); "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 originalpublic static void main
(String[] args
) {
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:
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.