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}

无论如何,我对编程还是很陌生,我一直在潜心研究它并边走边学。如果除了使用数组之外还有更有效的方法来处理这个问题,我愿意接受建议,

4

1 回答 1

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();

但是,Anint[][][]并不是最有效的数据结构 - 您可能需要考虑Dictionary<string, List<int>>

于 2013-01-17T18:46:13.557 回答