如何在字符串数组中拆分字符串?

时间:2016-12-29 06:40:54

标签: c# .net linq

下面是我的字符串数组:

 public string[] categories { get; set; }

现在这个类别包含如下记录:

 "categories": [
    "electronic,sports",
    "abc,pqr",
    "xyz",
  ]

输入

string[] categories = { "electronic,sports", "abc,pqr", "xyz"};

现在,我想在类别中拆分值并创建这样的记录,但仅在类别变量中

所以最终的类别变量应该包含如下输出:

"categories": [
    "electronic",
    "sports",
    "abc",
    "pqr",
    "xyz",
  ]

所以我希望我的循环运行5次;如果我循环使用类别变量,并且只对这个变量进行了大量的操作,那么我就不想在其他变量中取得最终输出。

 foreach (var category in categories)
 {
     //code
 }

4 个答案:

答案 0 :(得分:7)

您可以使用LINQ SelectMany(),然后将结果投影到数组:

using System.Linq;


string[] categories = { "electronic,sports", "abc,pqr", "xyz"};
categories = categories.SelectMany(o => o.Split(',')).ToArray();

foreach(var c in categories)
{
    Console.WriteLine(c);
}

<强> demo

输出

electronic
sports
abc
pqr
xyz

答案 1 :(得分:2)

如果没有代码,您可以尝试;

        List<string> temps = new List<string>();
        foreach (var category in categories)
        {
            temps.AddRange(category.Split(',').ToList());
        }
        categories = temps.ToArray();

答案 2 :(得分:2)

没有linq ...只使用几个foreach循环。

        string[] categories = new string[] { "electronic,sports", "abc,pqr", "xyz" };

        foreach(var category in categories)
        {
            foreach(var item in category.Split(','))
            {
                Console.WriteLine(item);
            }
        }

答案 3 :(得分:1)

这可能会为你做到这一点

List<string> newcategories = new List<string>();
foreach(var category in categories)
{
    if(category.Contains(","))
    {
        string[] c = category.Split(',');
        newcategories.Add(c[0]);
        newcategories.Add(c[1]);
    }
    else
    {
        newcategories.Add(category);
    }
}