C# では、この.Split
メソッドを呼び出すと、文字列が何らかの文字または文字列に基づいて文字列の配列に分割されます。
リストまたは配列に同等の方法はありますか?
例えば:
var foo = new List<int>() { 1, 2, 3, 0, 4, 5, 0, 6 };
var output = Split(foo, 0);
// produces { { 1, 2, 3 }, { 4, 5 }, { 6 } }
これは私がこれまでに持っているものです-同じタスクを達成するためのよりクリーンで雄弁な方法はありますか?
IEnumerable<IEnumerable<T>> Split<T>(IEnumerable<T> list, T divider)
{
var output = new List<List<T>>();
var temp = new List<T>();
foreach ( var item in list )
{
if (item.Equals(divider))
{
output.Add(temp);
temp = new List<T>();
}
else
{
temp.Add(item);
}
}
output.Add(temp);
return output;
}
編集:
私のバージョンではリストを単一の要素でのみ分割するのに対しstring.Split
、単一の文字または任意の文字列を使用して分割できることがわかりました。
完全を期すために、それを実装する最良の方法は何でしょうか?