C# Splitメソッド入門|文字列を指定した文字で分割する
文字列の中にカンマなどの区切り文字が含まれているとき、C#ではSplitメソッドを使うと、文字列を複数の要素に分割できます。
この記事では、本のタイトルと著者名をカンマで区切ったデータを例に、Splitメソッドの基本から、分割した値をオブジェクトへ代入する方法まで解説します。
Splitメソッドとは
Splitメソッドは、指定した文字を目印にして、1つの文字列を複数の文字列へ分割します。分割した結果はstring[]型の配列になります。
var str = "銀河鉄道の夜,宮沢賢治";
var items = str.Split(',');
items[0]:銀河鉄道の夜items[1]:宮沢賢治
配列の要素番号は
0から始まります。最初の要素はitems[0]です。
カンマで文字列を分割する
var str = "銀河鉄道の夜,宮沢賢治";
var items = str.Split(','); // カンマで分割する
Console.WriteLine("Title: {0}", items[0]);
Console.WriteLine("Author: {0}", items[1]);
実行結果
Title: 銀河鉄道の夜
Author: 宮沢賢治
str.Split(',')によって、カンマの前後が別々の要素になります。区切り文字そのものは、分割後の文字列には含まれません。
分割した値をBookオブジェクトへ代入する
分割した文字列は、オブジェクトのプロパティにも代入できます。
ここでは、次のようなBookクラスが定義されているものとします。
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
}
var str = "吾輩は猫である,夏目漱石";
var items = str.Split(',');
var book = new Book
{
Title = items[0],
Author = items[1],
};
Console.WriteLine($"{book.Title}, {book.Author}");
items[0]がTitleプロパティへ、items[1]がAuthorプロパティへ代入されます。
空白や空の要素を取り除く
実際のデータには、余分な空白や空の要素が含まれることがあります。その場合はStringSplitOptionsを指定すると便利です。
var str = "銀河鉄道の夜, ,宮沢賢治";
var items = str.Split(
',',
StringSplitOptions.TrimEntries |
StringSplitOptions.RemoveEmptyEntries
);
TrimEntries:各要素の前後にある空白を削除するRemoveEmptyEntries:空の要素を配列へ含めない
配列の要素数を確認する
区切り文字がない文字列を分割すると、配列の要素は1つだけになります。この状態でitems[1]を参照すると例外が発生するため、必要に応じて要素数を確認しましょう。
var items = str.Split(',');
if (items.Length >= 2)
{
Console.WriteLine($"タイトル:{items[0]}");
Console.WriteLine($"著者:{items[1]}");
}
else
{
Console.WriteLine("タイトルと著者をカンマで区切ってください。");
}
練習問題
次の文字列を|で分割し、商品名・価格・在庫数を表示してください。
var str = "ノート|180|25";
解答例を見る
var str = "ノート|180|25";
var items = str.Split('|');
if (items.Length >= 3)
{
Console.WriteLine($"商品名:{items[0]}");
Console.WriteLine($"価格:{items[1]}円");
Console.WriteLine($"在庫数:{items[2]}個");
}
まとめ
Splitメソッドを使うと、指定した区切り文字で文字列を分割し、string[]型の配列として受け取れます。
string[] 分割結果 = 元の文字列.Split(区切り文字);
「文字列を分割する」「配列から値を取り出す」「必要なオブジェクトへ代入する」という流れを覚えておくと、CSV形式のデータや入力文字列を扱う場面にも応用できます。







ディスカッション
コメント一覧
まだ、コメントがありません