web-dev-qa-db-ja.com

複数の文字区切り文字に基づいて文字列を分割する

「4,6,8\n9,4」という文字列があります

に基づいてこれを分割し、\ n

出力配列は

4
6
8
9
4

編集:

今、コンソールから上記の文字列を入力すると、コンソールから文字列を読み取っていますが、背後のコードでは"4,6,8\\n9,4"として取得します。 "," and "\\n"を使用して分割したいので。式を変更するにはどうすればよいですか?

58
Kuntady Nithesh

string.Split(char []) を使用します

string strings = "4,6,8\n9,4";
string [] split = strings .Split(new Char [] {',' , '\n' });

[〜#〜] edit [〜#〜]

不要な空のアイテムがある場合は、以下を試してください。 String.Splitメソッド(String []、StringSplitOptions)

string [] split = strings .Split(new Char [] {',' , '\n' }, 
                                 StringSplitOptions.RemoveEmptyEntries);

EDIT2

これは、更新された質問に対して機能します。必要なすべての分割文字をchar []に追加します。

string [] split = strings.Split(new Char[] { ',', '\\', '\n' },
                                 StringSplitOptions.RemoveEmptyEntries);
110
CharithJ

別のオプションは Regex.Split を使用することです。これは、分割シーケンスがより複雑な場合に役立ちます。たとえば、次のようにスペースも分割区切り文字の一部にできる場合:

"4,6,8 , 9\\n\\n4"

次に:

using System.Text.RegularExpressions;
var i = "4,6,8 , 9\n\n4";
var o = Regex.Split(i, @"[,\s\n]+");
// now o is:
// new string[] { "4", "6", "8", "9" }

使用される正規表現は「より受け入れやすい」ことに注意してください。\ nの間の空の「スペース」は無視され、「4 6 8 9 4」とまったく同じように受け入れられることに注意してください。猫の皮を剥ぐ方法よりも.

ハッピーコーディング。

8
user166390
var s = "4,6,8\n9,4";
var split = s.Split(new char[]{',', '\n'});

しかし、これはだまされている必要があります...

[〜#〜] edit [〜#〜]:コメントのアドレス指定。

このコード:

static void Main(string[] args)
{
    var s = "4,6,8\n9,4";

    foreach (var a in s.Split(new char[] { ',', '\n' }))
        System.Diagnostics.Debug.WriteLine(a);
}

これを出力します:

4
6
8
9
4

[〜#〜] edit [〜#〜]:コンソールからの入力の読み取りは異なります。 \nは、手動で入力した場合は異なります。

static void Main(string[] args)
{
    var s = "4,6,8\\n9,4";

    foreach (var a in s.Split(new string[] { ",", "\\n" }, StringSplitOptions.RemoveEmptyEntries))
        System.Diagnostics.Debug.WriteLine(a);
}
6
Austin Salonen
string tosplit = "4,6,8\n9,4";
var split = tosplit.Split(new Char [] {',', '\n' });

正しく印刷/表示されない場合に備えて:

split.ToList().ForEach(Console.WriteLine);
4
manojlds

String.Replace( '\ n'、 '、')に続けてstring.split( '、')を実行できますか?

2
andrew