【发布时间】:2011-02-10 15:03:07
【问题描述】:
我有一个像这样的 [文本] 树:
+---step-1
| +---step_2
| | +---step3
| | \---step4
| +---step_2.1
| \---step_2.2
+---step1.2
树2
+---step-1
| \---step_2
| | +---step3
| | \---step4
+---step1.2
这只是一个小例子,树可以更深,有更多的孩子等等。
现在我正在这样做:
for (int i = 0; i < cmdOutList.Count; i++)
{
string s = cmdOutList[i];
String value = Regex.Match(s, @"(?<=\---).*").Value;
value = value.Replace("\r", "");
if (s[1].ToString() == "-")
{
DirectoryNode p = new DirectoryNode { Name = value };
//p.AddChild(f);
directoryList.Add(p);
}
else
{
DirectoryNode f = new DirectoryNode { Name = value };
directoryList[i - 1].AddChild(f);
directoryList.Add(f);
}
}
但这不处理“step_2.1”和“step_2.2”
我认为我这样做完全错误,也许有人可以帮助我解决这个问题。
编辑:
这里是 DirectoryNode 类,让这一点更清楚..
public class DirectoryNode
{
public DirectoryNode()
{
this.Children = new List<DirectoryNode>();
}
public DirectoryNode ParentObject { get; set; }
public string Name;
public List<DirectoryNode> Children { get; set; }
public void AddChild(DirectoryNode child)
{
child.ParentObject = this;
this.Children.Add(child);
}
}
【问题讨论】:
-
我认为你的树模棱两可——或者我误解了某些部分。 Step3 在 \-- 之后是 step4,但是当 step2.1 发生同样的情况时,我们得到 step2.2?
-
树中的名称是相关的,将它们视为随机文件夹名称..
-
如果你的例子中有step_2.3,前面会是
+---还是\---? -
贾斯汀,如果有 step_2.3,那么它将以 \--- 开头,而 step_2.2 将以 +--- 开头