C# 创建嵌套列表的逻辑
我用以下格式解释一个包含嵌套列表的文本文件C# 创建嵌套列表的逻辑,c#,html,logic,nested-lists,C#,Html,Logic,Nested Lists,我用以下格式解释一个包含嵌套列表的文本文件 - todo - clean kitchen - do dishes - sweep floor - cook dinner - defrost fish - shopping - milk - eggs 我想将这些项目放入列表中。我正在试图找出这样做的逻辑,目前,通过空格数计算“深度”并根据最后一个深度是高还是低添加打开或关闭ul标记是一个可怕的混乱 必须有一个智能、简洁的逻辑来完成这项工作,我没
- todo
- clean kitchen
- do dishes
- sweep floor
- cook dinner
- defrost fish
- shopping
- milk
- eggs
我想将这些项目放入ul
标记是一个可怕的混乱
必须有一个智能、简洁的逻辑来完成这项工作,我没有这个逻辑?应该很容易通过使用
字符串来确定级别。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;
}
int lastLevel=-1;
弦线;
而((line=file.ReadLine())!=null)
{
int-level=GetLevel(line);//来自上面的代码
int diff=级别-最后级别;
如果(差异>1)
{
//向前跳过多个级别可能是一个错误。
抛出新的ApplicationException();
}
如果(差异==1)
{
//下一级。添加一个
WriteUl();
}
否则如果(差异==0)
{
//相同级别。添加一个-
书写(行);
}
其他的
{
//需要添加
,可能需要多次
做
{
WriteUlEnd();
--最后一级;
}while(lastLevel>level);
}
lastLevel=level;
}
如果你所拥有的只是你展示的数据,那真的是唯一的方法。你得数一数空格。谢谢吉姆,不过我希望能找到解决办法。一方面,它将我限制在有限的级别(也许我应该是)。实际上,我可能会采用完全不同的方法,使用div而不是无序列表,只需添加一个类,将它们缩进某个数量,我看不出级别有限有什么问题。在这种情况下,“有限”意味着超过20亿。如果你真的想变大,你可以用
长的。而且,是的。。。您可以使用div
来完成。它会稍微简化逻辑,因为你不必担心嵌套。啊,我稍微误读了代码,尽管它只适合一个深度级别,我还需要添加更多的if语句。谢谢