1

我试图让人们将帐号放入文本框中,我试图让他们以几种不同的方式输入它们

IE:

1234
5678
9101
1213

或者:

1234,5678,9101,1112

但由于某种原因,我的 Replace 函数不想尊重 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;
}

我将文本框中的所有内容都抓取到一个字符串中,然后想将所有内容强制放入一个逗号分隔的列表中,最后用逗号分割该列表。

我的替换中缺少什么?

4

2 回答 2

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);
于 2013-04-24T19:45:00.240 回答
2
 textLines = textLines.Replace( ... )
于 2013-04-24T19:44:53.553 回答