我一直在尝试扩展我的代码以包含基于某些字符串的第3级数组,这是我一直在努力做的事情,但我只能通过对代码的理解使其成为第二级数组。
string a = "{50,8,10} Grade 1; {70,10,45} Grade 2; {80,20,65} Grade 3: {90,100,23} Grade 4; {98,99,32} Grade 5; {100,1000,7} Grade 6";
int[][][] test =
a.Split(':')
.Select(t => Regex.Matches(t, @"(?<={).*?(?=})"))
.Cast<MatchCollection>()
.Select(m => m.Cast<Match>()
.Select(n => n.ToString().Split(',')
.Select(int.Parse))
.ToArray())
.ToArray()
.ToArray();
所以数组的每个部分看起来都像这样
//int[][][] { {50,8,10} Grade 1; {70,10,45} Grade 2; {80,20,65} Grade 3 }
// int[][] { {50,8,10},{70,10,45},{80,20,65} }
// int[] {50,8,10}
无论如何,我对编程还是很陌生,而且我一直在深入研究并随时学习。如果除了使用数组之外还有一种更有效的方法来处理这个问题,我愿意接受建议,
答案 0 :(得分:1)
您的代码实际上几乎是正确的。我认为只有一个)
不合适(我也清理了格式化)。
int[][][] test = a.Split(':')
.Select(t => Regex.Matches(t, @"(?<={).*?(?=})"))
.Cast<MatchCollection>()
.Select(m => m.Cast<Match>()
.Select(n => n.ToString().Split(',')
.Select(int.Parse)
.ToArray())
.ToArray())
.ToArray();
int[][][]
不是最有效的数据结构 - 您可能需要考虑使用Dictionary<string, List<int>>
。