0

後で処理するデータを含む特定のテキスト ファイルを解析するプログラムを書いています。各部分は、角括弧内のヘッダーで区切られています。ヘッダーを配列の名前として使用して、各セグメントを配列に配置する方法を知りたいと思っていました。以下は、テキスト ファイルの先頭の例です。処理するファイルを選択できるフォームを設定し、ループで objReader.ReadLine を使用して行ごとに処理する方法も設定します

[Params]
Version=106
Monitor=34
SMode=111111100
Date=20090725
StartTime=13:56:44.0
Length=00:24:30.5
Interval=1
Upper1=0
Lower1=0
Upper2=0
Lower2=0
Upper3=0
Lower3=0
Timer1=00:00:00.0
Timer2=00:00:00.0
Timer3=00:00:00.0
ActiveLimit=0
MaxHR=180
RestHR=70
StartDelay=0
VO2max=51
Weight=0

[Note]
TT Warm Up

[IntTimes]
00:24:30.5  140 83  154 174
0   0   0   41  112 33
0   0   0   0   0
0   12080   0   280 0   0
0   0   0   0   0   0

[IntNotes]

[ExtraData]

[Summary-123]
1470    0   1470    0   0   0
180 0   0   70
1470    0   1470    0   0   0
180 0   0   70
0   0   0   0   0   0
180 0   0   70
0   1470

[Summary-TH]
1470    0   1470    0   0   0
180 0   0   70
0   1470

[HRZones]
180
162
144
126
108
90
0
0
0
0
0  
4

3 に答える 3

0

私はそれを辞書に解析します:

    Dictionary<string, List<string>> d = new Dictionary<string, List<string>>();

    using (StreamReader reader = new StreamReader("filename"))
    {
        string token = null;
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            if (line.StartsWith("["))
                d[token] = new List<string>();
            else
                d[token].Add(line);
        }
    }

上記のアプローチでは、トークンが重複している場合にもデータ行が追加されます。

于 2011-05-11T00:13:56.557 に答える
0

このファイル形式は通常の INI ファイルを超えているため (Nicholas Carey の回答の David Yaw によるコメントを参照)、パーサー ジェネレーターによって作成された適切なパーサーを使用します。私が選んだツールはGOLD Parser Builderですが、他のパーサー ジェネレーターでも同様に機能します。

于 2011-05-12T22:31:45.660 に答える