Как я могу прочитать 2d-массив / матрицу из файла в C#, который разделен клавишами табуляции - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь прочитать матрицу из txt, но, похоже, это вообще не работает. Как это сделать, если вы не знаете количество строк и столбцов, поэтому матрица в файле каждый раз может быть разной?

Заранее спасибо!

1 Ответ

1 голос
/ 28 мая 2020

Вы можете попробовать 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();

Обратите внимание, что часто jagged array, т.е. array of array (int[][]) удобнее, чем 2d (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]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...