2013-02-22 3 views
1

я в настоящее время это:C# Чтение из текстового файла, разделенных запятыми в 2d массив

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 

Я не уверен, что мне нужно после того, как «=» в цикл, чтобы заставить его читать и разделить содержимое текстового файла в 2D массив.

ответ

2

Я не уверен, что мне нужно после того, как «=» в цикл

Там также линия отсутствует над ней:

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

Теперь линия с = будет выглядеть так:

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

Это сработало большое спасибо! – SexySaxMan

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]; 
      } 
     } 
    } 
} 
0

Я предлагаю вам изменить подход.

Перейдите по файлу с использованием метода ReadLine() класса StreamReader. Затем разделите строку чтения с помощью Split (new [] {','}), и это даст вам каждую запись. И, наконец, sQuestionAnswers [iCountLine, iCountAnswer] будет: запись в [iCountAnswer] только разделительного массива.

2

Это не использует StreamReader, но это короткий и легко понять:

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

Ряды извлекаются ReadAllLines в соответствии с новой строки. Значения столбцов извлекаются путем вызова Split в каждой строке. Он возвращает неровный массив, который можно использовать аналогично многомерному массиву, а также массивы с зазубринами, как правило, быстрее, чем многомерные массивы.

Смежные вопросы