C#の文字列を分割して配列にするサンプルです。
目次
サンプル | splitとは(文字列を分割して配列にする) |
カンマで区切る / 半角スペースで区切る / タブで区切る / 改行で区切る | |
ドットで区切る / 正規表現で区切り文字をORで指定 | |
末尾が区切り文字の時、最後は要素になる? |
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 color1 = "赤,黄,青";
var arr1 = color1.Split(',');
foreach (string s in arr1)
{
Console.WriteLine(s);// 赤 黄 青
}
Console.WriteLine(arr1.Length); // 3
}
}
7行目は、文字列をカンマで区切って配列にしています。
半角スペースで区切る
using System;
class Test1
{
static void Main()
{
var color1 = "赤 黄 青";
var arr1 = color1.Split(' ');
foreach (string s in arr1)
{
Console.WriteLine(s);// 赤 黄 青
}
Console.WriteLine(arr1.Length); // 3
}
}
7行目は、文字列を半角スペースで区切って配列にしています。
タブで区切る
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
var str1 = "赤 黄 青";
var arr1 = Regex.Split(str1, "\t");
foreach (string s in arr1)
{
Console.WriteLine(s);// 赤 黄 青
}
Console.WriteLine(arr1.Length); // 3
}
}
正規表現でタブを指定しています。(バックスラッシュ(円記号)+t)
改行で区切る
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
var str1 = "赤と黄\r\n青と緑\n白と黒";
var arr1 = Regex.Split(str1, "\r\n|\n");
Console.WriteLine(arr1[0]);//赤と黄
Console.WriteLine(arr1[1]);//青と緑
Console.WriteLine(arr1[2]);//白と黒
Console.WriteLine(arr1.Length); // 3
}
}
\r\nは復帰改行(CRLF)、\nは改行(LF)です。パイプ(|)は正規表現でorを意味します。
ドットで区切る
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
var str1 = "test.txt";
var arr1 = Regex.Split(str1, "\\.");
Console.WriteLine(arr1[0]);//test
Console.WriteLine(arr1[1]);//txt
Console.WriteLine(arr1.Length); // 2
}
}
正規表現のドットではなく、文字としてのドットを表すため\でエスケープを行います。
正規表現で区切り文字をORで指定
using System;
using System.Text.RegularExpressions;
class Test1
{
static void Main()
{
var str1 = "1:a,2:b,3:c";
var arr1 = Regex.Split(str1, "[,:]");
foreach (string s in arr1)
{
Console.WriteLine(s);// 1 a 2 b 3 c
}
Console.WriteLine(arr1.Length); // 6
}
}
9行目の[,:]は、カンマ(,)またはコロン(:)という正規表現です。
末尾が区切り文字の時、最後は要素になる?
using System;
class Test1
{
static void Main()
{
var str1 = "a,b,c,";
var arr1 = str1.Split(',');
Console.WriteLine(arr1.Length);//4
foreach (string s in arr1)
{
Console.WriteLine(s);//「a」「b」「c」「」
}
}
}
7行目は、末尾が区切り文字のカンマで終わっています。
この場合、区切り文字の後は空文字の要素になります。
関連の記事