C# 如何正确划分列表<;字符串>;?
我有C# 如何正确划分列表<;字符串>;?,c#,.net,string,list,C#,.net,String,List,我有列表{”,“1,5,4”,“h”,“5,8”,“1”}。我需要分成3个列表。这是我的代码: var parseString = condition.Trim().Split(separator).ToList(); var numberSections = new List<string>(); var numberRow = new List<string>(); var numberCell = new List<string>(); foreach
列表{”,“1,5,4”,“h”,“5,8”,“1”}
。我需要分成3个列表
。这是我的代码:
var parseString = condition.Trim().Split(separator).ToList();
var numberSections = new List<string>();
var numberRow = new List<string>();
var numberCell = new List<string>();
foreach (var str in parseString) {
if (int.TryParse(str.Substring(0, 1), out i) && numberSections.Count == 0) {
numberSections.Add(str);
parseString.Remove(str);
}
if (int.TryParse(str.Substring(0, 1), out i) && numberRow.Count == 0) {
numberRow.Add(str);
parseString.Remove(str);
}
if (int.TryParse(str.Substring(0, 1), out i) && numberCell.Count == 0) {
numberCell.Add(str);
parseString.Remove(str);
}
}
var parseString=condition.Trim().Split(separator.ToList();
var numberSections=新列表();
var numberRow=新列表();
var numberCell=新列表();
foreach(parseString中的var str){
if(int.TryParse(str.Substring(0,1),out i)&&numberSections.Count==0){
添加(str);
parseString.Remove(str);
}
if(int.TryParse(str.Substring(0,1),out i)&&numberRow.Count==0){
编号如箭头所示,添加(str);
parseString.Remove(str);
}
if(int.TryParse(str.Substring(0,1),out i)&&numberCell.Count==0){
编号cell.Add(str);
parseString.Remove(str);
}
}
但它不起作用。我该怎么做呢?这里有一个LINQ版本
var result = list.Select(x => x.Split(",".ToCharArray(),
StringSplitOptions.RemoveEmptyEntries)) // now we have List<List<string>>
.Select(x => x.Select(y =>
{
int value;
var isInt = int.TryParse(y, out value);
return isInt ? value : (int?)null;
})) // convert each element of inner list to null or its int values
// we have a List<List<int?>>
.Where(x => x.Any() && x.All(y => y.HasValue)) // only select lists which contains only integers
.ToList();
var result=list.Select(x=>x.Split(“,”.ToCharArray(),
StringSplitOptions.RemoveEmptyEntries))//现在我们有了列表
.Select(x=>x.Select(y=>
{
int值;
var isInt=int.TryParse(y,输出值);
返回isInt?值:(int?)null;
}))//将内部列表的每个元素转换为null或其int值
//我们有一份清单
.Where(x=>x.Any()&&x.All(y=>y.HasValue))//仅选择仅包含整数的列表
.ToList();
您不能在迭代时修改parseString
。此外,您只能在每个结果列表为空时将项目添加到这些列表中。为什么要使用3个列表来存储结果,而不是3个字符串变量?不清楚您想做什么。你能举几个输入和输出的例子吗?