文字列の基礎(2)

文字列を、「指定の区切り文字」で配列に分解するSplit関数と 逆に、配列を「指定の区切り文字列」を挟み込んで一つの文字列を生成するJoin関数についてまとめる。

Split

Splitはインスタンスメソッドで、基本は text1.Split('区切り文字'); の形で用いる。

例.

string word = "mon-tue-wed";
var words = word.Split('-');
foreach (var item in words)
{
    Console.WriteLine(item);
}

実行結果.

mon
tue
wed

区切り文字は複数指定可能. text1.Split('区切り文字1','区切り文字2'); の形で用いることができる。

例.

string word = "mon-tue$wed";
var words = word.Split('-','$');
foreach (var item in words)
{
    Console.WriteLine(item);
}

実行結果.

mon
tue
wed

区切り文字がたくさんある場合は、 text1.Split("文字列".ToCharArray()); のような使用法が便利。

例.

string word = "mon-tue$wed#thu";
var words = word.Split("-$#".ToCharArray());
foreach (var item in words)
{
    Console.WriteLine(item);
}

実行結果.

mon
tue
wed
thu

一般的状況では、次のようにSplit使用時に無駄な空の要素が含まれてしまうことがある。

例.

string word = "mon-tue##wed#thu";
var words = word.Split("-$#".ToCharArray());
foreach (var item in words)
{
    Console.WriteLine(item);
}

実行結果.

mon
tue

wed
thu

上の実行結果でtueとwedの間が空いているのは、wordに格納されている文字列内で、 区切り文字として指定されている#が「##」と連続しているためである。このような無駄な要素を配列に格納しない ようにするには、オプションを使用する。

例.

string word = "mon-tue##wed#thu";
var words = word.Split("-$#".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
foreach (var item in words)
{
    Console.WriteLine(item);
}

実行結果.

mon
tue
wed
thu

Join

この関数は、指定した区切り文字列によって、配列を一つの文字列に変換するメソッドである。

例.

string[] words = { "mon", "tue", "wed" };
Console.WriteLine(string.Join("-",words));

実行結果.

mon-tue-wed

intの配列にも使用できる。

例.

int[] numbers = { 2, 3, 5 };
Console.WriteLine(string.Join("-",numbers));

実行結果.

2-3-5

Note1. ToStringメソッドをoverrideすれば、自作クラスの配列にも適用可能。 ただし、クラスの指定が必要。

Note2. リストにもJoinは適用できる。