【发布时间】:2013-04-02 12:00:13
【问题描述】:
我正在尝试从一系列代表深度的字符串中提取:
'foo/bar/x'
'foo/bar/baz/x'
'foo/bar/baz/x'
'foo/bar/lol/x'
x 是一个我不关心的数字。我已经在/ 上拆分并循环遍历,此时在 PHP 中我会做一些事情,比如检查我在循环中的位置(使用for (i=0; etc)),然后用它来确定我的深度构建一个输出数组,如:
output['foo']['bar'] = 1
output['foo']['bar']['baz'] = 2
output['foo']['bar']['lol'] = 1
问题在于“深度”是动态的,可能只有 3/4 深(我可以通过对 i 的值进行大量检查并单独处理它们来解释)或者说 10 或更深在这种情况下,某种递归函数可能是最好的。
我遇到了一个问题,将字符串作为数组索引我需要使用字典,但是您必须指定字典中的类型,这意味着您需要了解高级深度(如果我错了)在实例化字典对象时。
我猜一个攻击可能类似于调用一个递归函数,这样每次调用它时你传递i 来指示深度,然后函数调用自己每次递减i,直到它构建了来自该输入字符串的树,但我不确定它是我在 C# 中使用的存储结构。
最终输出将是一个 CSV,我可以将其作为电子表格打开,如下所示:
Foo 0
|__Bar 1
|__Baz 2
|__Lol 1
也许解决方案的一个方向是使用纯 C# 数组并简单地将标题(例如 foo)存储在其中,将信息保留在数组索引之外,这可能是最好的做法。谢谢。
【问题讨论】:
-
即使在PHP中,如果
output['foo']['bar'] = 1,output['foo']['bar']['baz']怎么可能存在?output['foo']['bar']要么是字典,要么是值。我并不是说这是不可能的,但这不是一个好主意......也考虑一下:var whatAmI = output['foo']['bar'];,whatAmI == 1?whatAmI is Dictionary?
标签: c# recursion jagged-arrays recursive-datastructures