|
.NET TIPS
Stringクラスにより文字列を文字列で分割するには?[2.0のみ、C#、VB]
デジタルアドバンテージ 遠藤 孝信
2006/01/27 |
 |
|
.NET Framework 1.xでは、ある文字列を特定の文字列で分割するには、正規表現が利用可能なRegexクラス(System.Text.RegularExpressions名前空間)のSplitメソッドを使用するか、VB用のSplit関数を使用しなければならなかった(後者については「TIPS:文字列を文字列により分割するには?(VB.NET関数活用)」を参照)。
しかしもっと安易に利用できる手段が望まれていたようで、.NET Framework 2.0のStringクラス(System名前空間)には、文字列を文字列により分割できる、Splitメソッドの新しいバージョンが追加されている。
この新しいSplitメソッドは、第1パラメータで指定した文字列配列の要素で対象となる文字列を分割し、その結果を文字列配列として返す。第2パラメータでは、戻り値に空の配列要素を含めるかどうかをStringSplitOptions列挙体(System名前空間)の値(NoneあるいはRemoveEmptyEntries)で指定する。
以下にこのバージョンのSplitメソッドを使用したサンプル・プログラムを示す。
// stringsplit.cs
using System;
class StringSplit {
static void Main() {
string target = "abcくぎりクギリdefクギリghiクギリjkl";
string[] delimiter = { "くぎり" , "クギリ", "クギリ" };
string[] parts;
parts = target.Split(delimiter,
StringSplitOptions.None);
foreach (string s in parts) {
Console.WriteLine(s);
}
// 出力:※空の配列要素が含まれている
// abc
//
// def
// ghi
// jkl
parts = target.Split(delimiter,
StringSplitOptions.RemoveEmptyEntries);
foreach (string s in parts) {
Console.WriteLine(s);
}
// 出力:※空の配列要素は含まれない
// abc
// def
// ghi
// jkl
}
}
// コンパイル方法:csc stringsplit.cs
|
|
Stringクラスにより文字列を文字列で分割するC#のサンプル・プログラム(stringsplit.cs) |
|
' stringsplit.vb
Imports System
Class StringSplit
Shared Sub Main()
Dim target As String = "abcくぎりクギリdefクギリghiクギリjkl"
Dim delimiter As String() = { "くぎり" , "クギリ", "クギリ" }
Dim parts As String()
parts = target.Split(delimiter, StringSplitOptions.None)
For Each s As String In parts
Console.WriteLine(s)
Next
' 出力:※空の配列要素が含まれている
' abc
'
' def
' ghi
' jkl
parts = target.Split(delimiter, _
StringSplitOptions.RemoveEmptyEntries)
For Each s As String In parts
Console.WriteLine(s)
Next
' 出力:※空の配列要素は含まれない
' abc
' def
' ghi
' jkl
End Sub
End Class
' コンパイル方法:vbc stringsplit.vb
|
|
Stringクラスにより文字列を文字列で分割するVBのサンプル・プログラム(stringsplit.vb) |
|
なお、文字列を「文字」で分割するSplitメソッドのバージョンは以前からあったが、StringSplitOptions列挙体の値がパラメータとして追加されたバージョンが新しく用意されている。
利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Stringクラス(System名前空間)
使用ライブラリ:StringSplitOptions列挙体(System名前空間)
関連TIPS:文字列を文字列により分割するには?(VB.NET関数活用) |
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間