如何拆分数组项?

时间:2016-06-18 03:37:18

标签: c# .net arrays string

我的数组有问题。 我的数组名称word[3]有3个项目。

word[0] = "Listen Repeat"
word[1] = "Tune"
word[2] = "Landing Page"

我希望words[0]拆分新的两个项目并添加到数组中的现有项目。

words = Regex.Split(words[0], @"\s{1,}").Where(x => !string.IsNullOrEmpty(x)).ToArray(); 

所以,我的数组变得像:

word[0] = "Listen"
word[1] = "Repeat"

但我希望我的数组像:

word[0] = "Listen"
word[1] = "Repeat"
word[2] = "Tune"
word[3] = "Landing Page"

注意: 如果使用添加两个数组,则此数组不排序。 您可以在数组中看到我的下一个项目:

word[0] = "Listen"

word[1] = "Repeat"

word[2] = "Tune"

word[3] = "Langding Page"

如果我使用AddRange,则会:

word[0] = "Listen"

word[1] = "Tune"

word[2] = "Langding Page"

word[3] = "Repeat"

此代码将删除存在的项目并创建包含两个项目的新数组。 我不知道如何添加存在的数组。

我尝试Append,但没有成功。

1 个答案:

答案 0 :(得分:2)

您可以通过linq进行操作并使用SelectMany

var word = new string[3];
word[0] = "Listen Repeat";
word[1] = "Tune";
word[2] = "Landing Page";

word = word.SelectMany(x => Regex.Split(x, @"\s{1,}").Where(x => !string.IsNullOrEmpty(x))).ToArray();

如果您只想分割特定项目,则可以使用此功能。

public static string[] SplitItem(string[] input, int index)
{
    var l = new List<string>(input.Length);
    l.AddRange(input.Take(index));
    l.AddRange(Regex.Split(input[index], @"\s{1,}").Where(y => !string.IsNullOrEmpty(y)));
    l.AddRange(input.Skip(index + 1).TakeWhile(x => true));
    return l.ToArray();
}


var word = new string[3];
word[0] = "Listen Repeat";
word[1] = "Tune";
word[2] = "Landing Page";

word = SplitItem(word,0);