If string的一个衬里不为null或为空

时间:2013-03-27 13:47:38

标签: c# if-statement isnullorempty

我通常在整个应用程序中出于各种原因使用类似的东西:

if (String.IsNullOrEmpty(strFoo))
{
     FooTextBox.Text = "0";
}
else
{
     FooTextBox.Text = strFoo;
}

如果我要使用它很多,我将创建一个返回所需字符串的方法。例如:

public string NonBlankValueOf(string strTestString)
{
    if (String.IsNullOrEmpty(strTestString))
        return "0";
    else
        return strTestString;
}

并使用它:

FooTextBox.Text = NonBlankValueOf(strFoo);

我总是想知道是否有一些东西是C#的一部分,会为我做这件事。可以称之为的东西:

FooTextBox.Text = String.IsNullOrEmpty(strFoo,"0")

如果String.IsNullOrEmpty(strFoo) == true

,则第二个参数是返回值

如果没有人有更好的方法吗?

6 个答案:

答案 0 :(得分:124)

有一个空的合并运算符(??),但它不会处理空字符串。

如果您只对处理空字符串感兴趣,可以像

一样使用它
string output = somePossiblyNullString ?? "0";

根据您的具体需要,您可以使用条件运算符bool expr ? true_value : false_value来简单地设置或返回值的/ else语句块。

string output = string.IsNullOrEmpty(someString) ? "0" : someString;

答案 1 :(得分:13)

您可以使用ternary operator

return string.IsNullOrEmpty(strTestString) ? "0" : strTestString

FooTextBox.Text = string.IsNullOrEmpty(strFoo) ? "0" : strFoo;

答案 2 :(得分:8)

您可以为String类型编写自己的Extension方法: -

 public static string NonBlankValueOf(this string source)
 {
    return (string.IsNullOrEmpty(source)) ? "0" : source;
 }

现在你可以像使用任何字符串类型一样使用它

FooTextBox.Text = strFoo.NonBlankValueOf();

答案 3 :(得分:7)

这可能有所帮助:

public string NonBlankValueOf(string strTestString)
{
    return String.IsNullOrEmpty(strTestString)? "0": strTestString;
}

答案 4 :(得分:0)

老问题,但我想加上这个帮助,

#if DOTNET35
bool isTrulyEmpty = String.IsNullOrEmpty(s) || s.Trim().Length == 0;
#else
bool isTrulyEmpty = String.IsNullOrWhiteSpace(s) ;
#endif

答案 5 :(得分:0)

您可以通过与C#8/9中的switch表达式进行模式匹配来实现此目的

FooTextBox.Text = strFoo switch
{
    { Length: >0 } s => s, // If the length of the string is greater than 0 
    _ => "0" // Anything else
};