从解析的字符串中构建多级数组/锯齿数组

本文关键字:数组 多级 构建 字符串 | 更新日期: 2023-09-27 17:54:07

我一直在尝试扩展我的代码,以结合基于一些字符串的第三级数组,这就是我一直在尝试做的,但我只能使它与我对代码的理解第二级数组。

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}

无论如何,我对编程还是个新手,我一直在潜心学习。如果有一个更有效的方法来处理这个除了使用数组,我愿意接受建议,

从解析的字符串中构建多级数组/锯齿数组

您的代码实际上几乎是正确的。我想只是有一个)不合适(我也清理了一下格式)。

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>>代替。