2010-03-31 61 views
17

需要什么使String.IsNullOrEmpty()计算空白字符串为空?String.IsNullOrEmpty()检查空间

例如,我想下面的返回true而不是通常的false的:

String.IsNullOrEmpty(" "); 

难道还有比一个更好的方法:

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

(请注意,原来的问题问什么回报将成为常因此无情的评论,这已被一个更明智的问题所取代)。

+8

你试过了吗?它会返回false,因为你传递的字符串既不是空也不是空字符串。 – Paddy 2010-03-31 11:16:16

+3

为什么不制作简单的测试程序并自己尝试? – 2010-03-31 11:16:33

+0

Paddy:如果我不使用Trim(),它会返回false我已经尝试过它自己,这就是为什么我要问你的家伙。从我的角度来看,我们的开发人员经常使用剪裁,它也必须使用修剪功能,这正是我所想的。 – 2010-03-31 11:27:11

回答

48

.NET 4.0将引入方法String.IsNullOrWhiteSpace。在此之前,如果您想要像处理空字符串一样处理空格字符串,则需要使用Trim

对于不使用.NET 4.0的代码,一个辅助方法来检查null或空或空白字符串可以实现这样的:

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

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

String.IsNullOrEmpty将不进行任何修正,将只检查字符串是空引用或空字符串。

+0

嗯,如果你将它作为字符串的扩展方法时,将如何表现? ...或等待你不能写一个字符串扩展到字符串的实例,或者我错了吗? – cyberzed 2010-03-31 11:29:41

+0

@cyberzed,这可能是一个问题本身。你说的扩展方法只适用于字符串的实例。由于.NET 4.0上的新方法是'String'类的静态方法,因此不会发生碰撞。 – 2010-03-31 11:37:53

+0

呵呵,当我点击“添加评论”按钮时,我自己想出了答案,因此我决定将其作为其他人的参考:) – cyberzed 2010-03-31 13:03:55

11
String.IsNullOrEmpty(" ") 

...返回false

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

...抛出一个异常foo为空。

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

...返回true

当然,你可以实现它作为一个扩展功能:

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