1

私は現在これを持っています:

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配列に分割するために、forループの「=」の後に何が必要かわかりません。

4

4 に答える 4

2

これは使用しませんがStreamReader、短くて理解しやすいです。

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

行はReadAllLines改行に従って抽出されます。列の値はSplit、すべての行を呼び出すことによって抽出されます。多次元配列と同様に使用できるジャグ配列を返します。また、ジャグ配列は一般に多次元配列よりも高速です。

于 2013-02-22T13:42:04.597 に答える
2

forループの「=」の後に何が必要なのかわかりません

その上に欠落している行もあります:

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

の行は次の=ようになります。

sQuestionAnswers[iCountLine, iCountAnswer] = tokens[iCountAnswer];
于 2013-02-22T13:37:19.427 に答える
0

アプローチを変えることをお勧めします。

StreamReader クラスの ReadLine() メソッドを使用してファイルを調べます。次に、Split(new[]{','}) を使用して読み取り行を分割すると、すべてのレコードが得られます。そして最後に、sQuestionAnswers[iCountLine, iCountAnswer] は、Split 配列の [iCountAnswer] のレコードだけになります。

于 2013-02-22T13:38:27.410 に答える
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];
            }
        }
    }
}
于 2013-02-22T13:37:17.617 に答える