2010-06-17 107 views
0

我面臨一些問題。該場景是我有一個多行文本框,我想將所有文本放入一個單一字符串中,其中沒有任何新行。這是我的時刻:如何將多行文本框中的文本放入一個字符串中?

string[] values = tbxValueList.Text.Split('\n');     
      foreach (string value in values) 
      { 
       if (value != "" && value != " " && value != null && value != "|") 
       { 
        valueList += value; 
       } 
      } 

的問題是,無論我怎麼努力,我做什麼,總有一個新行(至少我認爲?)在我的字符串,所以不是越來越:

「valuevaluevalue」

我得到:

「價值
價值
價值」。

我甚至試圖用string.Replaceregex.Replace替代,但唉,無濟於事。請指教。

此致,
凱文面包車Zanten表示

回答

7

新生產線需要 「\ r \ n」。更好 - 使用Environment.NewLine

雖然代碼效率很低,但您正在創建大量不必要的字符串和不必要的數組。只需使用:

tbxValueList.Text.Replace(Environment.NewLine, String.Empty); 

在另一方面,如果你看到自己使用+=運營商在一根繩子上超過了幾次,那麼你或許應該使用一個StringBuilder。這是因爲字符串是Immutable

+0

我已接近它完全錯誤呢。我沒有改變''\ n「'的位置,而是搞亂了結果。你只是緩解了我的頭痛,非常感謝你! – Fusyion 2010-06-17 11:08:19

2

試試這個

tbxValueList.Text.Replace(System.Environment.NewLine, ""); 
+0

Doh!大衛在我面前到達了那裏。 – Bablo 2010-06-17 10:56:25

+0

雖然仍然欣賞幫助,謝謝! – Fusyion 2010-06-17 11:09:01

4

注意,新的生產線可以達到兩個字符取決於平臺。

您應該替換CR /回車(ASCII 13)和LF /換行(ASCII 10)。

我不會像David所說的那樣依賴本地化的數據(除非那是你的意圖);如果您從不同的環境中獲取文本字符串,例如來自Windows客戶端的數據庫,該怎麼辦?

我會使用:

tbxValueList.Text.Replace((Char)13,"").Replace((Char)10,""); 

,取代獨立的秩序兩個字符的所有地方。

+0

好點,我從來沒有理由考慮過之前。 +1 – 2010-06-17 11:06:49

+0

我會記住這一點,但對於目前的項目來說,這不是必需的。雖然謝謝! – Fusyion 2010-06-17 11:09:43

0

嘗試這一個,以及

string[] values = tbxValueList.Text.Replace("\r\n", " ").Split(' '); 
+0

'tbxValueList.Text.Split(「\ r \ n」,StringSplitOptions。沒有);'會做同樣的事情。這不是OP所要做的,這只是他最初解決方案的一部分。 – 2010-06-17 11:15:12

相關問題