在 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
可以使用单个字符或任意字符串进行拆分。
只是为了完整起见,实现它的最佳方法是什么?