c# - 将用逗号分隔的字符串 [] 数组解析为二维数组 C#
问题描述
我在 C# 中有一个长度为 3 的大型数组,其中填充了字符串:
字符串:
myArray[0,0] 包含:“1,11,2,18,4”
myArray[0,1] 包含:“2,21,12,138,14”
myArray[0,2] 包含:“1,131,21,138,24”
我想通过这个字符串数组(所以0,0到0,2。或者如果我有一百万,[0,0]到[0,999999]),用逗号分割数字,基本上生成这个:
var a = new int [,] { {1 , 11, 2, 18, 4 }, {2, 21, 12, 138, 14}, {1, 131, 21, 138, 24 } };
解决方案
这个问题用 LINQ 不容易解决,因为输出必须是二维数组。因此,我正在使用良好的旧循环。我还使用一维字符串数组作为输入。为了使代码正常工作,所有行必须包含相同数量的整数(在SubArrayLength
此处给出):
const int SubArrayLength = 5;
string[] myArray = { "1,11,2,18,4", "2,21,12,138,14", "1,131,21,138,24" };
var a = new int[myArray.Length, SubArrayLength];
for (int i = 0; i < myArray.Length; i++) {
var numbers = myArray[i].Split(',');
for (int j = 0; j < SubArrayLength; j++) {
a[i, j] = Int32.Parse(numbers[j]);
}
}
如果你有一个锯齿状数组(即数组的数组)而不是多维数组不是问题,你可以使用这个 LINQ 代码:
string[] myArray = { "1,11,2,18,4", "2,21,12,138,14", "1,131,21,138,24" };
var a = myArray
.Select(s => s.Split(',').Select(n => Int32.Parse(n)).ToArray())
.ToArray();
在这第二个示例a
中是 typeint[][]
而不是int[,]
. 嵌套数组的长度可以不同。
推荐阅读
- c# - 分页 Newtonsoft.Json
- python - 将彩色文本放入熊猫数据框 python
- java - Log4j 不读取大写字母
- git - 如何停止忘记更改每个 git 项目的身份
- javascript - 如何在我的视图中加载外部网站 ASP.NET Core
- java - Firebase 实时数据库更新数据 - Android Java
- linux - bash 脚本上的“缓存”凭据
- powerbuilder - PB App 仅适用于旧版 SQL Server,但不适用于新版 SQL Server。使困惑
- java - 使用 Jackson 反序列化的实例化集合类型而不是初始化一个新集合类型?
- android - 如何将值从 RecyclerView 项目传递和显示到其他活动?