1

人々がアカウント番号をテキストボックスに入力できるようにしようとしており、いくつかの異なる方法で入力できるようにしようとしています

いいえ:

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 に答える