下面是我的字符串数组:
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
}
答案 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);
}
}