C#从用逗号分隔的文本文件读入2d数组

时间:2013-02-22 13:34:11

标签: c# streamreader

我目前有这个:

using (StreamReader sr = new StreamReader("answers.txt"))
{
    for (iCountLine = 0; iCountLine < 10; iCountLine++)
    {
         for (iCountAnswer = 0; iCountAnswer < 4; iCountAnswer++)
         {
             sQuestionAnswers[iCountLine, iCountAnswer] = 
         }
    }
}

我的文本文件格式如下(10行文字,每行有4个项目以逗号分隔):

example, example, example, example 
123, 123, 123, 123

我不确定在for循环中的“=”后我需要什么才能让它读取并将文本文件的内容拆分成2D数组。

4 个答案:

答案 0 :(得分:2)

  

我不确定在for循环中的“=”之后我需要什么

上面还缺少一条线:

var tokens = sr.ReadLine().Split(',');

现在=的行看起来像这样:

sQuestionAnswers[iCountLine, iCountAnswer] = tokens[iCountAnswer];

答案 1 :(得分:2)

这不会使用StreamReader,但它简短易懂:

        string[] lines = File.ReadAllLines(@"Data.txt");
        string[][] jaggedArray = lines.Select(line => line.Split(',').ToArray()).ToArray();

根据换行符,ReadAllLines提取行。通过在每一行上调用Split来提取列值。它返回锯齿状数组,你可以使用类似于多维数组,锯齿状数组通常比多维数组更快。

答案 2 :(得分:0)

string line;

using (var sr = new StreamReader("answers.txt"))
{
    while ((line = sr.ReadLine()) != null)
    {
        for (int iCountLine = 0; iCountLine < 10; iCountLine++)
        {
            var answers = line.Split(',');
            for (int iCountAnswer = 0; iCountAnswer < 4; iCountAnswer++)
            {
                sQuestionAnswers[iCountLine, iCountAnswer] = answers[iCountAnswer];
            }
        }
    }
}

答案 3 :(得分:0)

我建议你改变方法。

使用StreamReader类的ReadLine()方法遍历文件。 然后使用Split(new [] {','})拆分读取行,这将为您提供每条记录。 最后,sQuestionAnswers [iCountLine,iCountAnswer]将是:刚刚拆分数组的[iCountAnswer]的记录。