C# 通过考虑NULL来修剪文本框值

C# 通过考虑NULL来修剪文本框值,c#,asp.net,.net,visual-studio,C#,Asp.net,.net,Visual Studio,你能告诉我TrimNull是否是多余的,我是否应该使用替代品吗 例如: string username = UsernameTextBox.Text.TrimNull(); 我被告知没有定义或扩展方法。也许我遗漏了一个参考资料 更新: 如果值为NULL,返回空字符串的最可读方式是什么?我通常使用string.IsNullOrWhiteSpace,如下所示: string username = (String.IsNullOrWhiteSpace(UsernameTextBox.Text) ?

你能告诉我TrimNull是否是多余的,我是否应该使用替代品吗

例如:

string username = UsernameTextBox.Text.TrimNull();
我被告知没有定义或扩展方法。也许我遗漏了一个参考资料

更新:


如果值为NULL,返回空字符串的最可读方式是什么?

我通常使用string.IsNullOrWhiteSpace,如下所示:

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

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

为null的字符串不是其值。这是一个国家。这意味着它没有被分配内存,因为它是引用类型。如果它是一个值类型数据类型,它将被自动分配一个默认值,比如int,它的0等等

你应该使用

if(!String.IsNullOrEmpty(UsernameTextBox.Text))
    string username = UsernameTextBox.Text.Trim();

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

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

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

如果您的目标是检测字符串是空还是空,请使用string.IsNullOrEmptymyString

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

myString.TrimEndnew char[]{'\0'}


但正如Frédéric Hamidi所说,如果你指的是后者,用户将很难将空字符输入到文本框中,因此在处理它们的输入时,你不必担心这种情况。

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

public static class StringExtensions
{
    public static string TrimNull(this string value)
    {
        return string.IsNullOrWhiteSpace(value) ? value : value.Trim();
    }
}
将此添加到您的项目中,您的代码将正常工作

这只是一种选择。

使用@sixlettvariables answer in中提到的


这个函数是什么?没有为字符串定义这样的函数。什么是TrimNull。。这不是什么奇怪的方法应该做什么?框架中没有TrimNull。可能有人添加了扩展,而您缺少对该dll的引用。但是我们怎么知道呢?假设你指的是,它在这里不是很有用。UsernameTextBox是一个文本框,最终用户很难在文本框中嵌入空字符。有趣的是,这段代码是活的,而且有效!比那更糟。如果字符串为null,则会发生异常,因为没有字符串对象可用来调用TrimNull方法。@CharlieKilian。我将修改我的答案以反映这一点。它可能是字符串的扩展。这是一直困扰我的.NET framework中字符串函数的问题。我希望它们在String对象上实现为静态方法。您甚至不能将它们作为扩展方法自己编写,因为您不能为静态对象编写扩展方法。唉。@Alain:正如有人发布的那样,有一个VB6函数TrimNull注意:不是每个null都是未定义的值:@Lijo当然,这会起作用=除非如果OP希望返回null,它将永远不会返回null,但谁知道呢=如果你总是想要一个非null的字符串,那么你的答案是有效的。
string username = (UsernameTextBox.Text ?? String.Empty).Trim();