プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[C#] Splitコマンドの区切り文字に文字列を指定する

カンマ区切りの文字列をカンマで分割して処理したいときには、Splitコマンドを使用します。

string[] array = "12,34,56,78".Split(',');
foreach (string s in array)
{
    Console.WriteLine(s);
}

とっても簡単です。

区切り文字が1文字でない場合は(“12@@34@@56″とか)、そのまま”@@”などと引数に指定すると怒られます。
区切り文字を文字列で指定したい場合は、引数に少し工夫が必要です。

string[] array = "12@@34@@56@78".Split(new string[]{"@@"}, StringSplitOptions.None);

区切り文字が1種類しか必要なくても配列で指定する必要があります。
また、第2引数は省略不可です。

ちなみに、StringSpliitOptionsというのは、分割した際に空文字があった場合の処理方法を決めるオプションです。

StringSplitOptions.Noneを指定した場合、

string[] array = "12,,56,78".Split(new string[]{"@@"}, StringSplitOptions.None);
foreach (string s in array)
{
    Console.WriteLine(s);
}

この実行結果は、

12

56
78

となりますが、
StringSplitOptions.RemoveEmptyEntriesを指定すると、

string[] array = "12,,56,78".Split(new string[]{"@@"}, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in array)
{
    Console.WriteLine(s);
}

この実行結果は、

12
56
78

のように、空文字は分割した配列中に含まれなくなります。

指定方法は若干分かりにくいですが、慣れれば大丈夫です。

普通は区切り文字は1文字だと思うのでchar指定でも問題ないですが、
改行コード(\r\n)の分割がしたいときなど、

あれ?区切り文字に文字列が指定できないじゃんww

とう言う時は参考にしてください。

※改行コードを区切りに指定したい場合、

string[] array = "12\r\n34\r\n56\r\n78".Replace("\r\n", "\n").Split('\n')

のように、一旦1文字の何かに置き換えてからSplitするという方法もあります。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください