2010-03-31 18 views
17

¿Qué se necesita para que String.IsNullOrEmpty() cuente las cadenas de espacios en blanco como vacías?String.IsNullOrEmpty() Comprobar espacio

Por ejemplo. Quiero que el siguiente para volver true en lugar del habitual false:

String.IsNullOrEmpty(" "); 

¿Existe un mejor enfoque que:

String.IsNullOrEmpty(" ".Trim()); 

(Tenga en cuenta que la pregunta original preguntó lo que el retorno sería normalmente de ahí la comentarios poco comprensivos, esto ha sido reemplazado por una pregunta más sensata).

+8

¿Lo has probado? Devolverá falso, ya que la cadena que está pasando no es nula ni la cadena vacía. – Paddy

+3

¿Por qué no hace un programa de prueba simple y lo prueba usted mismo? –

+0

Paddy: devolverá falso si no utilizo Trim() Lo he probado yo mismo y es por eso que les pido a sus muchachos. Desde mi punto de vista, como el desarrollador usamos recortar muy a menudo, también debe usar la función de recorte, eso fue lo que pensé. –

Respuesta

48

.NET 4.0 introducirá el método String.IsNullOrWhiteSpace. Hasta entonces, necesitará usar Trim si desea tratar cadenas de espacios en blanco de la misma manera que maneja cadenas vacías.

Para el código de no usar .NET 4.0, un método de ayuda para comprobar si hay null o cadenas vacías o espacios en blanco se pueden implementar como esto:

public static bool IsNullOrWhiteSpace(string value) 
{ 
    if (String.IsNullOrEmpty(value)) 
    { 
     return true; 
    } 

    return String.IsNullOrEmpty(value.Trim()); 
} 

El String.IsNullOrEmpty no realizará ninguna guarnición y se acaba de comprobar si el cadena es una referencia nula o una cadena vacía.

+0

Hmm, ¿cómo se comportará eso si lo haces como método de extensión en String cuando .net 4.0 está fuera? ... o espera, no puedes escribir una extensión en Cadena solo para instancias de cadena, ¿o estoy equivocado aquí? – cyberzed

+0

@cyberzed, eso podría ser una pregunta por sí mismo. Tiene razón acerca de los métodos de extensiones que se aplican solo a instancias de cadena. Y dado que el nuevo método en .NET 4.0 es un método estático en la clase 'String', no se produciría ninguna colisión. –

+0

Hehe, se me ocurrió la respuesta justo cuando presiono el botón "Agregar comentario", así que decidí dejarlo como referencia para otras personas :) – cyberzed

11
String.IsNullOrEmpty(" ") 

... devuelve falso

String foo = null; 
String.IsNullOrEmpty(foo.Trim()) 

... lanzaría una excepción porque foo es nulo.

String.IsNullOrEmpty(foo) || foo.Trim() == String.Empty 

... Devuelve true

Por supuesto, se puede aplicar como una función de extensión:

static class StringExtensions 
{ 
    public static bool IsNullOrWhiteSpace(this string value) 
    { 
     return (String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim())); 
    } 
} 
Cuestiones relacionadas