如何将一维数组转化为二维数组的具体规律?
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]];
12
到FE
的距离不一定固定 (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]);
【讨论】:
感谢您的回答!我想从一维数组换成二维数组,你的回答让我硕果累累以上是关于如何将一维数组转化为二维数组的具体规律?的主要内容,如果未能解决你的问题,请参考以下文章