índice de Visual Studio 2005 y .NET Framework 2.0 Trucos .NET 2.0

String.IsNullOrEmpty

Comprobar si una cadena está vacía o tiene un valor nulo

 
Publicado: 11/Abr/2006
Actualizado: 11/Abr/2006
Autor: Guillermo 'guille' Som
Pulsa para votar este artículo en Panorama Box


Introducción

Una de las cosas que normalmente deberíamos hacer al tratar con las cadenas en .NET es comprobar si el contenido tiene un valor nulo (Nothing) o está vacía.
Las cadenas de .NET por defecto tienen un valor nulo, a diferencia de lo que ocurría con VB6 en el que las cadenas siempre tenían un valor "vacío" por defecto, es decir, podíamos trabajar con esa cadena aunque no tuviera nada.
Pero en .NET (desde la primera versión) eso ya no es así, y en más de una ocasión nos hemos encontrado con una excepción al intentar manipularla.
La solución que teníamos era comprobar si el contenido era nulo o estaba vacía, para ello teníamos que usar una doble comprobación (si queríamos hacer las cosas bien y de forma rápida):

If Not cadena Is Nothing AndAlso cadena.Length > 0 Then ...
if( cadena != null && cadena.Length > 0 ) {...}

Aunque también podíamos hacer esto otro:

If cadena <> "" Then ...
if( cadena != "" ) {...}

Pero según que circunstancias, esta última no nos solucionaba el problema.

Pero en la versión 2.0 de .NET Framework, la clase String tiene un método que sirve precisamente para eso: IsNullOrEmpty y la forma de usar este método para hacer algo cuando la cadena no esté vacía ni tenga un valor nulo, es:

If String.IsNullOrEmpty(cadena) = False Then ...
if( String.IsNullOrEmpty(cadena) == false ) {...}

Por ejemplo, en el siguiente código (para VB y C#) se comprueba si una cadena tiene algún contenido válido, y si es así se muestra el contenido y la longitud del mismo, en caso contrario se muestra un mensaje diciendo que la cadena está vacía.

Para Visual Basic:

Console.Write("Escribe algo y pulsa Intro >")
Dim s As String = Console.ReadLine()

If String.IsNullOrEmpty(s) Then
    Console.WriteLine("La cadena está vacía o tiene un valor nulo.")
Else
    Console.WriteLine("La cadena es: '{0}' y tiene {1} caracteres.", s, s.Length)
End If

 

Para C#:

Console.Write("Escribe algo y pulsa Intro >");
string s = Console.ReadLine();
 
if( String.IsNullOrEmpty(s) ){
    Console.WriteLine("La cadena está vacía o tiene un valor nulo.");
}else{
    Console.WriteLine("La cadena es: '{0}' y tiene {1} caracteres.", s, s.Length);
}

 

Para probar que funciona, ejecuta este código y si pulsas simplemente INTRO te dirá que la cadena está vacía, si escribes algo y después pulsas INTRO, te mostrará lo que has escrito y el número de caracteres.

 

¡Que lo desanules bien!

Nos vemos.
Guillermo


la Luna del Guille o... el Guille que está en la Luna... tanto monta...