文字列を任意の文字で分割する - Visual C# プログラミング

PROGRAM


文字列を任意の文字で分割する

文字列を任意の文字で分割する関数といえば "Split" という名前がお馴染みですけど、C# でもこの名前で同じ機能を持った関数が String クラスのメソッドとして用意されています。

ただ、使い方が少しばかり独特な感じなので、その辺りについて見て行きたいと思います。

 

まず、C# の String クラスが持つ Split では、区切り文字として、文字 (char) でも 文字列 (String) でも指定することができます。

そして、区切り文字を複数指定して、例えば "-" か ":" が現れたところで分離したいなど、その区切り記号のうちのどれかが登場した箇所を区切り位置として分割できる仕様になっているところが、Split メソッドの使い方を難しくしているところの様子です。

 

文字 (char) 型で区切り文字を指定する場合については、次のように簡単に記すことができます。

String[] buffer = text.Split(',');

このようにすることで、String 型の変数 "text" の内容を、カンマで分割した内容が、String 型の配列 "buffer" に格納されます。

同じように "-" か ":" が現れた部分で分割したい場合にも、次のように必要な文字をカンマ区切りで指定して行けば実現できます。

String[] buffer = text.Split('-', ':');

 

ところが、文字列 (String) で分割したい場合には、様子がだいぶ違ってきます。

例えば "$$" という文字列を区切り文字として分離したい場合には、次のような感じになります。

String[] buffer = text.Split(new String[] { "$$" }, StringSplitOptions.None);

ここの第 1 引数では Split メソッドの引数として "new String[] { "$$" }" というものを渡しています。これはつまり、要素が "$$" だけの String 型の配列を新規に作成して、それを Split に渡すといった意味合いになります。

また、第 2 引数として、区切り文字が連続して現れた場合に、それらの間に空文字列が存在しているものとして分割を行うことを意味する "StringSplitOptions.None" を指定しています。

 

なお、文字 (char) による分割でも、文字列 (String) と同じような書き方をすることができます。

String[] buffer = text.Split(new Char[] { ',' }, StringSplitOptions.None);

最初に紹介した Split メソッドの用法は、この書き方の短縮形みたいな感じになります。

文字 (char) による分割であれば、Split 引数の中にそれを記載してあげることで、C# 側で自動的に char 型の配列として読み替えてくれるので、ずいぶん簡単にコードを記載することができるようになっていました。


[ もどる ]