我有一个数组/列表/集合/等对象。出于示例目的,我们假设它只是一个字符串数组/列表/集合/等。
我想迭代数组并根据某些条件拆分某些元素。这完全由我的对象处理。因此,一旦我有了要分割的对象索引,分割对象然后按顺序将其重新插入原始数组的标准方法是什么。我将尝试演示使用字符串数组的含义:
string[] str = { "this is an element", "this is another|element", "and the last element"};
List<string> new = new List<string>();
for (int i = 0; i < str.Length; i++)
{
if (str[i].Contains("|")
{
new.AddRange(str[i].Split("|"));
}
else
{
new.Add(str[i]);
}
}
//new = { "this is an element", "this is another", "element", "and the last element"};
此代码适用于所有内容,但是有更好的方法吗?是否有一个已知的设计模式;对于像inplace array split?
答案 0 :(得分:3)
对于此特定示例,您可以使用SelectMany
来获取新阵列。
string[] array = { "this is an element", "this is another|element", "and the last element" };
string[] newArray = array.SelectMany(s => s.Split('|')).ToArray();
// or List<string> newList = array.SelectMany(s => s.Split('|')).ToList();
// or IEnumerable<string> projection = array.SelectMany(s => s.Split('|'));
答案 1 :(得分:0)
你可以这样做:
List<string> newStr = str.SelectMany(s => s.Split('|')).ToList();