尝试逐行解析文本文件并将行拆分为锯齿状的单词数组

问题描述 投票:0回答:1

我试图逐行读取文件的每一行,并放置这些单独的行,进一步划分为一个单独的“单词”数组到一个锯齿状数组,以便我可以进一步操作它们。如果有人熟悉我正在尝试代码挑战的第12天,所以我的输入看起来像

0 <-> 780, 1330
1 <-> 264, 595, 1439
2 <-> 296, 531, 1440

我希望每一行都是

array[0][0] = 0
array[0][1] = <-> 
array[0][2] = 780
array[0][3] = 1330
array[1][0] = 1 
... etc

我一直在研究这个问题,现在我似乎无法让C#做到这一点。这是我一直在尝试的最新解决方案

 static void Main(string[] args)
 {
     string[][] input = new string[2000][];
     string line;
     System.IO.StreamReader file = 
     System.IO.StreamReader(@"c:/theFilePath.txt");
     while ((line = file.ReadLine()) != null)
     {
         for (int i = 0; i < 2000; i++)
         {
             string[] eachArray = line.Split(null);
             input[i] = new string[] { eachArray };
         }
      }
      for (int i = 0; i < input.Length; i++)
      {
          for (int j = 0; j < input[i].Length; j++)
          {
             Console.WriteLine(input[i][j]);
          }
       }
   }

我得到的错误是“不能隐式转换类型字符串[]到字符串”

但是不应该锯齿状阵列的每一行都是string[]而不是string

我必须错过这里幕后发生的一些基本方面。我已经尝试过使用File.ReadAllLinesFile.ReadLines并将它们解析为字符串数组,但问题总是归结为在循环中实例化数组。似乎无法做到这一点。

在C#中解决这个问题的任何其他方法也会受到欢迎,我想更好地理解这个问题。

c# jagged-arrays
1个回答
2
投票

System.IO的File类有方法ReadAllLines,可以在这里使用。要拆分每一行并转换为数组,请使用SelectToArray Linq扩展方法(添加所需的usings以访问所提到的方法)

using System.IO;
using System.Linq;

string[][] input = File.ReadAllLines(@"c:/theFilePath.txt")
                       .Select(x => x.Split(' '))
                       .ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.