よく見るテキスト ファイルを解析する良い方法を見つけようとしています。問題は、単純な 1 行のセクションを解析することではなく、複数行にまたがり、:
. 2 つ目の問題は、次のセクションの前に、値とキーのペアとして機能しないランダムな行がときどきあることです。
私の考え (ただし、コーディング方法はまだわかりません) は、SECTION 値が既知であるため、それらを で提供でき、List<string>
それにより、解析がセクション内の別の値に到達するまでセクションを通過できるようになるというものです。List<string>
. それが、これまでのコードでやろうとしたことです。
私が助けを必要としているのは、主に複数行の問題を理解し、二次的に辞書のリスト ( List<Dictionary>
) にすべてを格納して、各セクションを独自の辞書に格納することです (または、誰かがより良いアイデアを持っている場合は、ぜひ)。
サンプルテキスト:
Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur.
SECTION1
VALUE1: incididunt ut labore
VALUE2: nostrud
VALUE3: eiusmod tempor
VALUE4: Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor
sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
VALUE5: Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.
SECTION2
VALUE1: incididunt ut labore
VALUE2: nostrud
VALUE3: eiusmod tempor
VALUE4: Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor
sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
VALUE5: Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
サンプルコード:
bool Sec1 = false;
bool Sec2 = false;
for (int i = 0; i < lines.Length; i++)
{
if (lines[i].Equals("SECTION1") || Sec1 == true)
{
if (lines[i + 1].StartsWith(" "))
{
MessageBox.Show(lines[i + 1].Trim());
Sec1 = true;
}
else
{
Sec1 = false;
}
}
else if (lines[i].Equals("SECTION2") || Sec2 == true)
{
if (lines[i + 1].StartsWith(" "))
{
MessageBox.Show(lines[i + 1].Trim());
Sec2 = true;
}
else
{
Sec2 = false;
}
}
}