假设我想解析一个带有各种左方括号和右方括号的字符串(我在标题中使用了括号,因为我认为它更常见——不过问题是一样的),这样我就可以在一个列表中分离出所有更高的级别。
鉴于:
[hello:=[notting],[hill]][3.4(4.56676|5.67787)][the[hill[is[high]]not]]
我想:
List("[hello:=[notting],[hill]]", "[3.4(4.56676|5.67787)]", "[the[hill[is[high]]not]]")
我这样做的方法是计算左括号和右括号,并在我将计数器设为 0 时添加到列表中。但是,我有一个丑陋的命令式代码。您可以假设原始字符串格式正确。
我的问题是:解决这个问题的好方法是什么?
注意:我曾考虑过使用 for...yield 构造,但考虑到计数器的使用,我无法获得简单的条件(我也必须有条件来更新计数器)而且我不知道如何使用它在这种情况下构造。