如何将一维数组转化为二维数组的具体规律?

Posted

技术标签:

【中文标题】如何将一维数组转化为二维数组的具体规律?【英文标题】:How to convert the specific law of one-dimensional array into two-dimensional array? 【发布时间】:2021-11-30 18:32:41 【问题描述】:

像这样

string[]  strarry = [12, 34, A1, FE, 12, 34, EA, 0, FE]

12 是开头, FE 结束, 变成

string strarry = [[12,34,A1,FE], [12,34,EA,0,FE]];

12FE距离不一定固定 (4)

我该怎么做?谢谢

【问题讨论】:

你试过什么,有什么问题? “12到Fe的长度不一定”...不一定是什么?划分区域的标准是什么? strarry 的长度是否始终相同(9 个元素)?而且您总是希望第一个子数组中有 4 个元素,第二个子数组中有 5 个元素? 当你说“两位”数组时,你大概是指二维数组吧? 是二维数组;天哪,是我的错 您可以在此处查看如何对列表进行分区:***.com/a/1396143/1817574。将结果转换为二维数组应该不难。 【参考方案1】:

如果我没听错(你想从 ordinal 中获取 jagged 数组 string[][] - string[]),你可以试试 Linq 为了将GroupBy 项放入子数组中:

  using System.Linq;

  ...

  string[] strarry = new string[]
    "12", "34", "A1", "FE", "12", "34", "EA", "0", "FE";

  // Here we exploit side effects, be careful with them
  int groupIndex = 0;

  string[][] result = strarry
    .GroupBy(value => value == "FE" ? groupIndex++ : groupIndex)
    .Select(group => group.ToArray())
    .ToArray();

让我们看看:

  string report = string.Join(Environment.NewLine, result
    .Select(line => "[" + string.Join(", ", line) + "]"));

  Console.Write(report);

结果:

[12, 34, A1, FE]
[12, 34, EA, 0, FE]

【讨论】:

【参考方案2】:

我不确定此代码对您的适用性如何,但也许它能让您有所收获。祝你好运!

        var strarry = "12, 34, A1, FE, 12, 34, EA, 0, FE";
        var splittedArrays = strarry.Split(", FE", StringSplitOptions.RemoveEmptyEntries);

        for (int i = 0; i < splittedArrays.Length; i++)
        
            if (splittedArrays[i][0].Equals(','))
            
                splittedArrays[i] = splittedArrays[i].Substring(2);
            

            splittedArrays[i] += ", FE";
            Console.WriteLine(splittedArrays[i]);
        

【讨论】:

感谢您的回答!我想从一维数组换成二维数组,你的回答让我硕果累累

以上是关于如何将一维数组转化为二维数组的具体规律?的主要内容,如果未能解决你的问题,请参考以下文章

python中如何将多个一维数组变成二维数组

java中二维数组和ArrayList的相互转换

C# CS结构中 2005 如何将二维数组转化成DataSet

js将一维数组转化为二维数组

C++二维数组给一维数组赋值

一维数组与二维数组的拼接与二维数组增加行