【C# String】1つまたは複数の区切り記号で文字列を分割する(String.Spritメソッド)

C#

String.Splitメソッドを使えば、指定の区切り文字で文字列を分割して分割された文字列の配列を生成します。

CSVファイル(カンマ区切り)形式のデータを取り出したり、設定ファイルからKey, Valueを取り出す場合に非常に便利です。

区切り記号で文字列を分割

CSVファイル レコード読み込んでデータを取り出すサンプルです。

//CSVファイル形式(カンマ区切り)のデータ
string str = "name,sex,age,birthday,from";

//カンマ(,)でレコード分割して配列に格納
string[] data = str.Split(',');

//data[0] = "name"
//data[1] = "sex"
//data[2] = "age"
//data[3] = "birthday"
//data[4] = "from"

次の例では設定ファイルのレコードをKeyとValueに分割して、Dictionary型に登録しています。

//設定ファイル情報格納用Dictionary
Dictionary<string,string> settings = new Dictionary<string,string>();

//設定ファイル 背景色設定のレコード
string str = "background-color=Black";

//イコール(=)で文字列を分割して配列に格納
string[] splitString = str.Split('=');

//Dictionaryに追加
settings[splitString[0]] = splitString[1]; 

複数の区切り文字で文字列を分割

また複数の区切り文字を指定して文字列を分割することも可能です。

分割して空になる文字列を配列に含めたくない場合は、String.Splitメソッドのオプション(StringSplitOptions.RemoveEmptyEntries)で空の文字列を除外できます。

//複数区切り文字はchar型配列で指定します。下記はスペース、コロン、スラッシュ指定
char[] delimiterChars = {' ', ':', '/'};

string str = "2022/12/24 12:12:30,,name,sex,age";

//複数区切り文字で文字列を分割
string[] timeData1 = str.Split(delimiterChars);
//複数区切り文字で文字列を分割(空の文字列は除外する)
string[] timeData2 = str.Split(delimiterChars,StringSplitOptions.RemoveEmptyEntries);

//それぞれの結果は下記のようになります
//timeData1[0] = "2022"  //timeData2[0] = "2022"
//timeData1[1] = "12"    //timeData2[1] = "12"
//timeData1[2] = "24"    //timeData2[2] = "24"
//timeData1[3] = "12"    //timeData2[3] = "12"
//timeData1[4] = "12"    //timeData2[4] = "12"
//timeData1[5] = "30"    //timeData2[5] = "30"
//timeData1[6] = ""      //timeData2[6] = "name"
//timeData1[7] = "name"  //timeData2[7] = "sex"
//timeData1[8] = "sex"   //timeData2[8] = "age"
//timeData1[9] = "age"   

コメント

タイトルとURLをコピーしました