2013-04-24 61 views
1

我試圖讓人們扔掉的帳號到一個文本框,我試圖讓他們在幾個不同的方式進入他們Environment.Newline和替換

IE:

1234 
5678 
9101 
1213

或者:

1234,5678,9101,1112

但由於某些原因我的替換功能不希望尊重Environment.Newline或 「\ r \ n」 個

public string[] getAccounts() 
{ 
    string textLines; 
    string[] accounts; 

    textLines = accountsTextBox.Text; 
    textLines.Replace(Environment.NewLine, ","); 
    accounts = textLines.Split(Environment.NewLine.ToArray(), StringSplitOptions.RemoveEmptyEntries); 

    return accounts; 
} 

我抓住了從文本框到字符串的所有內容,然後想要強制所有內容進入逗號分隔列表,最後用逗號分隔該列表。

我在替換中丟失了什麼?

+0

可能是你的文本沒有按其實沒有任何'Environment.NewLine'的實例。也許它只是''\ n「'作爲新的行指示符,也許它只是'」\ r「',或者也許完全是另一回事。從看看實際的字符串開始,看看有什麼。 – Servy 2013-04-24 19:45:26

+0

該字符串看起來像這樣「1234 \ r \ n5678 \ r \ n」等。@Servy – 2013-04-24 19:46:11

回答

7

這是因爲String.Replace不會修改原始字符串,而是會返回一個新字符串。您應該更新行

textLines.Replace(Environment.NewLine, ","); 

如下:

textLines = textLines.Replace(Environment.NewLine, ","); 

此外,你有你的電話的另一問題String.Split()

它試圖拆就Environment.NewLine.ToArray()。假設你正確地進行了替換,它應該已經在這一點上用逗號替換了你的換行符,這樣在字符串中就不會有換行符了。

我的最終建議是以下幾點:

// At the class level 
static char[] delimiters = new char[]{','}; 

// In your getAccounts() function 
textLines = accountsTextBox.Text.Replace(Environment.NewLine, ","); 
accounts = textLines.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); 

或者,您也可以在通話完全放棄對String.Replace()更新你的符陣,就像這樣:

// At the class level 
static char[] delimiters = ("\r\n,").ToArray(); // treat '\r' '\n' and ',' as delimiters 

// In your getAccounts() function 
accounts = accountsTextBox.Text.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); 
+0

謝謝你,認爲這是我過去看的東西。 – 2013-04-24 19:46:43

2
textLines = textLines.Replace(...)