【问题标题】:Parse TXT File Into 2D String Array in C#在 C# 中将 TXT 文件解析为二维字符串数组
【发布时间】:2011-10-07 20:12:18
【问题描述】:

我正在寻找一种方法来将我拥有的文本文件解析为具有 9 行和 7 列的二维字符串数组。每个 Pip 应该是另一列,每个 Enter 应该是另一行。 100|What color is the sky?|Blue,Red,Green,Orange|Blue

这是我到目前为止的代码,但我不知道如何正确解析它。

private void loadQuestions()
    {
        string line;
        string[,] sQuestionArray = new string[9, 7];
        System.IO.StreamReader file = new System.IO.StreamReader("questions.txt");
        while ((line = file.ReadLine()) != null)
        {

        }
        file.Close();
    }

任何帮助将不胜感激。

【问题讨论】:

  • 当你说 7 列时,你的意思是逗号也应该被视为单独的列吗? IE - 第 1 行应该是 100 - 天空是什么颜色? - 蓝色 - 红色 - 绿色 - 橙色 - 蓝色?
  • 以您的示例为例,您希望数组的结构如何? (示例)
  • 数组应该是[100,天空是什么颜色,Blue,Red,Green,Orange,Blue]然后有9行类似但每列的内容不同。

标签: c# arrays string parsing text


【解决方案1】:

如果你可以使用string[][] 而不是string[,] 那么你可以这样做

string[] lines = File.ReadAllLines("questions.txt");
string[][] result = lines.Select(l => l.Split(new []{'|', ','})).ToArray();

【讨论】:

  • 只是想弄清楚你的工作原理。我假设它将信息存储在string [][] result 中,但我如何调用这些值?我尝试调用result[1][1];,但我得到一个错误“索引超出了数组的范围。”
  • @Cistoran 你能发布几行示例数据吗?只需一行,我猜你可以试试result[0][1]
  • 哦,效果很好,忘了数组从 0 开始,而不是 1。谢谢!
【解决方案2】:

看看Split

例如:var splitLine=line.Split(new[] {',', '|'});

【讨论】:

    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    相关资源
    最近更新 更多