C# Split 文字列を分割して配列にする

C#の文字列を分割して配列にするサンプルです。

目次

説明 Splitメソッド
サンプル カンマで区切る / 半角スペースで区切る / タブで区切る / 改行で区切る
  複数の区切り文字をORで指定 / 複数の区切り文字をANDで指定
  文字列の末尾が空文字の時も要素として取得

Splitメソッド

  • 文字列が引数(文字列 or 正規表現)にマッチすると、そこで文字列を区切ります。
  • StringクラスのSplitメソッドは文字列で区切ります。
  • RegexクラスのSplitメソッドは正規表現を使えます。
  • 戻り値はstringの配列です。
  • 以下はMicrosoftのSplitメソッドのリンクです。
    https://docs.microsoft.com/ja-jp/dotnet/csharp/how-to/parse-strings-using-split

カンマで区切る

using System;
class Test1
{
    static void Main()
    {
        var c1 = "赤,黄,青";
        var ar1 = c1.Split(',');

        foreach (string s in ar1)
        {
            Console.WriteLine(s);// 赤 黄 青
        }
    }
}

7行目は、文字列をカンマで区切って配列にしています。

半角スペースで区切る

using System;
class Test1
{
    static void Main()
    {
        var c1 = "赤 黄 青";
        var ar1 = c1.Split(' ');

        foreach (string s in ar1)
        {
            Console.WriteLine(s);// 赤 黄 青
        }
    }
}

7行目は、文字列を半角スペースで区切って配列にしています。

タブで区切る

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		var str1 = "赤	黄	青";
		var ar1 = Regex.Split(str1, @"\t");

		foreach (string s in ar1)
		{
			Console.WriteLine(s);// 赤 黄 青
		}
	}
}

正規表現でタブを指定しています。(バックスラッシュ(円記号)+t)

改行で区切る

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		var str1 = "赤と黄\r\n青と緑\n白と黒";
		var ar1 = Regex.Split(str1, @"\r\n|\n");

		foreach (string s in ar1)
		{
			Console.WriteLine(s);//赤と黄 青と緑 白と黒 
		}
	}
}

正規表現で改行を指定しています。
\r\nは復帰改行(CRLF)、\nは改行(LF)、パイプ(|)はorを意味します。

複数の区切り文字をORで指定

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		var str1 = "1:a,2:b,3:c";
		var ar1 = Regex.Split(str1, @"[,:]");

		foreach (string s in ar1)
		{
			Console.WriteLine(s);// 1 a 2 b 3 c
		}
	}
}

9行目の[,:]は、カンマ(,)またはコロン(:)という正規表現です。

複数の区切り文字をANDで指定

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		var str1 = "a:a:;bb:;c;c";
		var ar1 = Regex.Split(str1, @":;");

		foreach (string s in ar1)
		{
			Console.WriteLine(s);//a:a bb c;c
		}
	}
}

9行目の:;は、コロン(:)とセミコロン(;)という正規表現です。

文字列の末尾が空文字の時も要素として取得

using System;

class Test1
{
	static void Main()
	{
		var str1 = "a,b,c,,";
		var ar1 = str1.Split(',');

		foreach (string s in ar1)
		{
			Console.WriteLine(s);//「a」「b」「c」「」「」
		}
		Console.WriteLine(ar1.Length);//5
	}
}

7行目は、末尾がカンマで終わっています。
結果は、12,14行目のように空文字も要素として取得します。

関連の記事

C# 文字列の始まり/終わりを確認(StartsWith/EndsWith)
C# 文字列の位置を取得する(indexOf/lastIndexOf)
C# 文字列/文字を置き換えるサンプル(Replace)
C# 文字列を切り出す(Substring)

△上に戻る