3

いくつかの文字列に基づいて第 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 に答える