作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个文件 file.txt
包含以下内容:
6,73,6,71
32,1,0,12
3,11,1,134
43,15,43,6
55,0,4,12
这段代码用于读取它并将其提供给锯齿状数组:
string[][] arr = new string[5][];
string[] filelines = File.ReadAllLines("file.txt");
for (int i = 0; i < filelines.Length; i++)
{
arr[i] = filelines[i].Split(',').ToArray();
}
我如何做同样的事情,但使用二维数组?
最佳答案
假设您在开始读取文件之前知道二维数组的尺寸(或至少知道最大尺寸),您可以这样做:
string[,] arr = new string[5,4];
string[] filelines = File.ReadAllLines("file.txt");
for (int i = 0; i < filelines.Length; i++)
{
var parts = filelines[i].Split(','); // Note: no need for .ToArray()
for (int j = 0; j < parts.Length; j++)
{
arr[i, j] = parts[j];
}
}
如果您不知道维度,或者如果每行中的整数数量可能不同,您当前的代码将起作用,并且您可以在读完所有内容后使用一点 Linq 来转换数组:
string[] filelines = File.ReadAllLines("file.txt");
string[][] arr = new string[filelines.Length][];
for (int i = 0; i < filelines.Length; i++)
{
arr[i] = filelines[i].Split(','); // Note: no need for .ToArray()
}
// now convert
string[,] arr2 = new string[arr.Length, arr.Max(x => x.Length)];
for(var i = 0; i < arr.Length; i++)
{
for(var j = 0; j < arr[i].Length; j++)
{
arr2[i, j] = arr[i][j];
}
}
关于c# - 如何将锯齿状数组转换为二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614694/
我是一名优秀的程序员,十分优秀!