以下を使用してレベルを決定するのに十分簡単である必要がありますstring.IndexOf
:
string line = file.ReadLine();
int level = line.IndexOf('-');
level = (level - 1)/2;
レベルを処理するロジックはもう少し興味深いものです。次のようなものがうまくいくはずです。
int lastLevel = -1;
string line;
while ((line = file.ReadLine()) != null)
{
int level = GetLevel(line); // from code above
int diff = level - lastLevel;
if (diff > 1)
{
// skipping multiple levels forward is probably an error.
throw new ApplicationException();
}
if (diff == 1)
{
// next level. Add a <ul>
WriteUl();
}
else if (diff == 0)
{
// same level. Add an <li>
WriteLi(line);
}
else
{
// need to add </ul>, possibly multiple times
do
{
WriteUlEnd();
--lastLevel;
} while (lastLevel > level);
}
lastLevel = level;
}
あなたが持っているのがあなたが示すデータだけであるならば、それは本当にそれをする唯一の方法です。スペースを数える必要があります。