-1

你能告诉我 TrimNull() 是否是多余的,我是否应该使用替代方案?

例如:

string username = UsernameTextBox.Text.TrimNull();

我被告知没有定义或扩展方法。也许我缺少一个参考?

更新

如果值为 NULL readable,返回的最多方法是什么?empty string

4

5 回答 5

5

没有这样的功能TrimNull(String)- 它不会做任何事情。字符串要么为空,要么为非空,不能同时包含两者。如果字符串为空,则静态函数TrimNull(myString)将无法从字符串中“删除”任何内容。如果它不为空,则不会NULL删除。更糟糕的是,如果 TrimNull 是一个实例方法,如果 myString 是一个实例方法,则myString.TrimNull()只会导致异常NULL- 因为您不能在空引用上调用任何方法。

  • 如果您的目标是修剪字符串周围的空白字符,只需使用myString.Trim().

  • 如果您的目标是检测字符串是否为空,请使用myString == NULL

  • 如果您的目标是检测字符串是空的还是空的,请使用String.IsNullOrEmpty(myString)

  • 如果您的目标是从数据流中修剪尾随空字符 ( \0),请尝试以下操作:

    myString.TrimEnd(new char[] { '\0' } )

但正如 Frédéric Hamidi 所说,如果您指的是后者,用户将很难将空字符放入 TextBox,因此您在处理他们的输入时不必担心这种情况。

于 2012-04-11T13:36:30.123 回答
2

我通常使用 String.IsNullOrWhiteSpace(),像这样:

string username = (String.IsNullOrWhiteSpace(UsernameTextBox.Text) ? 
    null : UsernameTextBox.Text.Trim());

这样,如果.Text属性为 null,则不会导致异常。

于 2012-04-11T13:36:21.293 回答
1

如果您愿意,您可以为此创建自己的扩展方法:

public static class StringExtensions
{
    public static string TrimNull(this string value)
    {
        return string.IsNullOrWhiteSpace(value) ? value : value.Trim();
    }
}

将此添加到您的项目中,您的代码将起作用。

这只是一个替代方案。

于 2012-04-11T13:47:44.243 回答
1

使用否定空合并运算符中的@sixlettervariables 答案中提到的空合并运算符

string username = (UsernameTextBox.Text ?? String.Empty).Trim();
于 2013-02-21T12:56:36.893 回答
0

为 NULL 的字符串不是它的值。它是一个状态。这意味着它没有被分配内存(因为它是一个引用类型)。如果它是一个值类型的数据类型,它会被自动分配一个默认值,比如 int 它的 0 等等

你应该使用

if(!String.IsNullOrEmpty(UsernameTextBox.Text))
    string username = UsernameTextBox.Text.Trim();
于 2012-04-11T13:36:25.613 回答