首页 > 解决方案 > 如何从 C# 中的文件中读取二维数组/矩阵,它与制表键分隔

问题描述

我正在尝试从 txt 中读取矩阵,但它似乎根本不起作用。不知道行数和列数怎么办,所以文件中的矩阵每次都可以不一样?

提前致谢!

标签: c#arraysmatrix

解决方案


您可以尝试使用Linq来查询文件:

  using System.IO;
  using System.Linq;

  ...

  int[][] result = File
    .ReadLines(@"c:\myMatrix.txt")
    .Where(line => !string.IsNullOrWhiteSpace(line))
    .Select(line => line
       .Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries)
       .Select(item => int.Parse(item))
       .ToArray())
    .ToArray();

请注意,通常是锯齿状数组,即数组数组( int[][]) 比 2d one ( int[,])更方便

编辑:如果您坚持使用2D 数组,您可以从锯齿状数组中获取它:

   int[,] result2D = new int[
     result.Length, 
     result.Any() ? result.Max(line => line.Length) : 0];

   for (int row = 0; row < result.Length; ++row) 
     for (int col = 0; col < result[row].Length; ++col)
       result2D[row, col] = result[row][col]; 

推荐阅读