2012-04-11 54 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

相關問題