C#将元素拆分成多个元素

时间:2010-10-22 00:58:46

标签: c# list

我有一个数组/列表/集合/等对象。出于示例目的,我们假设它只是一个字符串数组/列表/集合/等。

我想迭代数组并根据某些条件拆分某些元素。这完全由我的对象处理。因此,一旦我有了要分割的对象索引,分割对象然后按顺序将其重新插入原始数组的标准方法是什么。我将尝试演示使用字符串数组的含义:

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?

2 个答案:

答案 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();