C#で文字列を指定の区切り文字で分割

指定の文字で区切られた文字列を分割して抜き出したいというケースは多いと思います。

代表的なのは CSV 。カンマで区切られて値が格納されています。

 

そんなときに使うのが string.Split メソッドです。

指定した区切り文字で分割し、分割した文字列を配列として取得することが出来ます。

基本的な使い方

カンマで区切られた文字列を分割してみます。

    static void Main(string[] args)
    {
        string   src  = "13,東京都,とうきょうと,2193.96km2";
        string[] dest = src.Split(',');

        foreach (string s in dest)
        {
            Console.WriteLine(s);
        }
    }

Splitメソッドの1番目の引数に区切り文字を指定します。

結果は以下のような出力になります。

13
東京都
とうきょうと
2193.96km2

空の要素を無視するRemoveEmptyEntriesオプション

例えばスペース区切りの文字列の場合、要素と要素の間が複数個のスペースで構成されていたりします。

このような場合は、StringSplitOptions.RemoveEmptyEntries を使いましょう。

    static void Main(string[] args)
    {
        string   src  = "13 東京都       とうきょうと      2193.96km2";
        string[] dest = src.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

        foreach (string s in dest)
        {
            Console.WriteLine(s);
        }
    }

結果は以下のような出力なります。

13
東京都
とうきょうと
2193.96km2

文字列で分割

区切り文字が文字列でも分割する事ができます。

以下の例では [クギリ] という文字列で分割しています。

    static void Main(string[] args)
    {
        string   src  = "13[クギリ]東京都[クギリ]とうきょうと[クギリ]2193.96km2";
        string[] dest = src.Split(new string[] { "[クギリ]" }, StringSplitOptions.None);

        foreach (string s in dest)
        {
            Console.WriteLine(s);
        }
    }

Splitメソッドの1番目の引数にstring型の配列を指定します。

結果は以下のような出力なります。

13
東京都
とうきょうと
2193.96km2