2012-04-11 46 views
-1

您能否告诉我TrimNull()是否多余以及是否应该使用替代方法?通过考虑NULL来修改文本框的值

例如:

string username = UsernameTextBox.Text.TrimNull(); 

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

UPDATE

什么是最readable方式返回empty string如果值为NULL?

+0

回答这是什么功能?没有为字符串定义这样的函数。 – gbianchi 2012-04-11 13:36:34

+2

什么是TrimNull()..它不是C# – Marshal 2012-04-11 13:36:42

+0

该奇怪的方法应该做什么?在框架中没有'TrimNull'。也许有人已经添加了扩展名,并且你错过了对该dll的引用。但我们怎么知道? – 2012-04-11 13:37:27

回答

0

你可以创建自己的扩展,方法为,如果你喜欢:

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

添加到您的项目,你的代码将工作。

这只是一种选择。

+0

您对我在答案中提到的方法有什么看法? – Lijo 2013-02-21 12:58:37

+1

@Lijo当然,这将工作=)除非永远不会返回null,如果这是OP想要的,但是谁知道=)如果你总是想要一个非空的字符串,那么你的答案是有效的。 – 2013-02-21 13:19:58

2

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

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

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

0

作为NULL的字符串不是它的值。它的一个状态。这意味着它没有被分配一个内存(因为它是一个引用类型)。假如它会自动得到一个数值型数据类型它woudld被分配一个默认值像INT其0等

ü应使用

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

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

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

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

  • 如果你的目标是检测字符串是否为空或null使用String.IsNullOrEmpty(myString)

  • 如果你的目标是要修剪从数据流尾随零字符(\0),尝试以下方法:

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

但正如FrédéricHamidi所说,如果您指的是后者,用户将很难在TextBox中获取空字符,因此您在处理其输入时不应该担心这种情况。

+1

比这更糟糕。如果字符串为空,则会发生异常,因为不会有String对象调用TrimNull()方法。 – 2012-04-11 13:38:03

+0

@CharlieKilian正是。我会修改我的答案以反映这一点。 – Alain 2012-04-11 13:38:39

+0

它可能是字符串的扩展。 – 2012-04-11 13:41:19