Gia*_*dze 5 .net c# arrays multidimensional-array
我有一个file.txt包含以下内容的文件:
6,73,6,71
32,1,0,12
3,11,1,134
43,15,43,6
55,0,4,12
Run Code Online (Sandbox Code Playgroud)
这段代码可以读取并将其提供给锯齿状数组:
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();
}
Run Code Online (Sandbox Code Playgroud)
我将如何做同样的事情,但使用2D阵列?
假设您在开始阅读文件之前知道 2D数组的尺寸(或至少是最大尺寸),您可以执行以下操作:
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];
}
}
Run Code Online (Sandbox Code Playgroud)
如果你不知道的尺寸,或者整数每行的数量可能会有所不同,当前的代码将工作,你可以使用一个小的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];
}
}
Run Code Online (Sandbox Code Playgroud)