如何将锯齿状数组转换为2D数组?

我有一个文件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(); } 

我将如何做同样的事情,但使用2Darrays?

假设您在开始阅读文件之前知道 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]; } } 

如果您不知道维度,或者每行的整数数量可能会有所不同,那么您当前的代码将会起作用,并且您可以在读完所有内容之后使用一点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]; } }