[C#] 空白やスペース含む文字列分割を行う簡単な方法


はじめに

本投稿では、文字列分割の方法についてご紹介できればと思います。

C#での文字列分割は、基本的に「Split」を利用します。

このSplitに対してLinqを用いることで、より簡単に文字列分割を制御することができます。

Split関数について

Splitは、文字列が引数に指定した文字にマッチした場合に区切って配列として格納します。

string alphabetStr = "A,B,C,D";
string[] alphabetArr = alphabetStr.Split(',');

foreach (string alphabet in alphabetArr)
{
    Console.WriteLine(alphabet);
}

A
B
C
D

他にも正規表現で区切る方法もありますが、ここでは割愛します。

上記の通り、Split関数を使うことで文字列を文字によって区切ることができますが、今回は少し応用として、空白は取り除く、文字列にスペースが入っていた場合は無視するなどをLinqを使って表現したいと思います。

Linqを利用した文字列分割

今回は、「空文字を無視」「分割後の文字列の前後スペースをTrimする」の2点です。

string alphabetStr = "A,B ,C, D,,";
var alphabetArr = alphabetStr.Split(',').Select(s => s.Trim()).Where(s => !string.IsNullOrEmpty(s));

foreach (string alphabet in alphabetArr)
{
    Console.WriteLine(alphabet);
}

A
B
C
D

同じ結果が得られました。

上記をLinqを利用しないで実施した結果は下記の通りです。

string alphabetStr = "A,B ,C, D,,";
var alphabetArr = alphabetStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

foreach (string alphabet in alphabetArr)
{
    Console.WriteLine(alphabet.Trim());
}

A
B
C
D

個人的にLinqの方が綺麗に仕上がるイメージです。

最後に

Splitの基本的な使い方は、さまざまな方が投稿していると思いますので、ここではLinqと組み合わせて使う方法をご紹介しました。

是非活用してみてください。