Validar cadena vacia en java

Ha veces es necesario comprobar si una cadena que introduce el usuario es una cadena vacia (o simplemente no escribio nada). Por ejemplo cuando se le solicita al usuario su nombre en un JTextField y el usuario no quiere escribirlo y simplemente escribe uno o varios espacios para intentar engañar al sistema y presiona <enter> o el boton de procesar.

El metodo Java que muestro a continuacion espera recibir una cadena y devuelve true si todos los caracteres son espacio.


/*
 Descripcion:
 Contiene un metodo que Valida si una cadena todos son espacios.
 author: gonzasilve@gmail.com
 fecha:  06/12/2009
 archivo Cadenaespacios.java
*/

public class CadenaEspacios
{
 //Devuelve true si en una cadena que llega todos son espacios, false en caso contrario
 public boolean sonEspacios(String cad)
 {
 for(int i =0; i<cad.length(); i++)
 if(cad.charAt(i) != ' ')
 return false;

 return true;
 }

 public static void main(String args[])
 {
 CadenaEspacios cadena1 = new CadenaEspacios();
 //Devuelve true
 System.out.println("Cadena \"       \" Son espacios: " + cadena1.sonEspacios("        "));
 //Devuelve false
 System.out.println("Cadena \" hola7   \" Son espacios: " + cadena1.sonEspacios(" hola7   "));
 //Devuelve false
 System.out.println("Cadena \"756   \" Son espacios: " + cadena1.sonEspacios("756   "));
 }
}

Como se puede ver el metodo simplemente toma caracter por caracter y lo compara si no es igual al caracter ‘ ‘ (espacio) si  alguno no es espacio (se cumple la condicion if) devuelve false; lo que significa  que en la cadena NO todos los caracteres son espacios. Si el if no se cumple ninguna vez, se ejecuta la instruccion return true; lo que significa que todos los caracteres de la cadena son espacios.

A continuacion muestro una imagen de la compilacion y ejecucion de la prueba de este metodo en mi S.O. Ubuntu.

Algunos pueden pensar que es mas facil escribir un codigo como:


if( cadena.equals(" ") )

Pero en ese caso se esta comparando toda la cadena con un solo espacio, pero eso va a devolver true solo si la cadena tiene un solo espacio, pero (otro pero mas) ¿y si la cadena son varios espacios?, en ese caso el if anterior no se cumpliria (un espacio es diferente de varios espacios).

bueno por otra parte debo decir que el if del metodo SonEspacios() , este if:


 if(cad.charAt(i) != ' ')

se puede reemplazar por este otro:


 if( ! Character.isWhiteSpace( cad.charAt(i) ) )

Espero que alguien le sirva esta cosa, me despido, hasta pronto.

}


if( cadena.equals(" ") )

A %d blogueros les gusta esto: