Splitメソッドでは文字列を「文字列」により分割することはできない。文字列を文字列により分割したい場合には、正規表現が利用可能なRegexクラス(System.Text.RegularExpressions名前空間)のSplitメソッドを使用することもできるが、正規表現を使うまでもないような用途には、VB.NETのSplit関数が使える。本稿では、VB.NETおよびC#からVB.NETのSplit関数を利用して文字列を分割する方法について解説する。VB.NETにおけるSplit関数を使った文字列の分割Split関数は文字列(第1パラメータ)を、区切り文字列(第2パラメータ)により分割し、分割された文字列(=部分文字列)を配列として返す。以下にその記述例を示す。CompareMethod.Binary)Split関数の第3パラメータには、取得する部分文字列の数を指定する。ここで「-1」を指定した場合には、すべての部分文字列を含む配列を取得できる。第4パラメータにはCompareMethod.Binary(バイナリ・モード)かCompareMethod.Text(テキスト・モード)を指定する。バイナリ・モードの場合には、区切り文字列と完全に一致した部分でのみ分割されるが、テキスト・モードでは、大文字/小文字、全角/半角、ひらがな/カタカナの区別なしに文字列が分割される*。詳細には、バイナリ・モードではCompareOptions列挙体で定義されている文字列比較オプションのうち、「IgnoreCase」「IgnoreKanaType」「IgnoreWidth」の組み合わせが区切り文字の比較方法となる。テキスト・モードでは「Ordinal」のみが比較方法となる。次のVB.NETのサンプル・プログラムは、これらの2つのモードの違いを示している。リjkl」)から分かるように、文字列に濁点などを含む半角カタカナ文字列が含まれている場合(文字列の全角表記と半角表記で文字数が異なる場合)、テキスト・モードでは正しく分割されないようなので注意が必要だ。C#におけるSplit関数を使った文字列の分割VB.NETの関数は、C#からも利用できる。その具体的な利用方法については「TIPS:VB.NET固有の関数をC#で使用するには?」を参照していただきたい。C#では、Split関数はStringsクラス(Microsoft.VisualBasic名前空間)の静的メソッドであるSplitメソッドとして利用可能だ。テキスト/バイナリ・モードはCompareMethod列挙体(Microsoft.VisualBasic名前空間)の値により指定する。以下に上記のVB.NETのサンプル・プログラムと同等のC#のプログラムを示す。vbsplit.csVB.NETのSplit関数を使用したC#のサンプル・プログラム(vbsplit.cs)vbsplit.csのダウンロードなお、VB.NETでは第2パラメータ以降を省略してSplit関数を呼び出すこともできるが、C#ではパラメータを省略することはできない。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。