【发布时间】:2011-07-02 18:31:42
【问题描述】:
我有一个类似代码的字符串,如下所示:
a
{
bcd
{
ef
{
gh
{
i
}
j
}
}
k
{
lmn
{
op
}
qr
{
st
}
uv
{
wx
}
y
}
z
}
我希望解析这个字符串,以便我可以从这个代码创建一个分层数组,其中每棵树都是基于{ 创建的,而一棵树以} 结尾。
数组看起来像:
[
"a",
"{",
[
"bcd",
"{",
[
"ef",
"{",
[
"gh",
"{",
[
"i"
],
"}",
"j"
],
"}"
],
"}",
"k",
"{",
[
"lmn",
"{",
[
"op"
],
"}",
"qr",
"{",
[
"st"
],
"}",
"uv",
"{",
[
"wx"
],
"}",
"y"
],
"}",
"z"
],
"}"
]
任何人都可以帮助我获得这个算法吗?
您也可以将这些语言中任何一种 Java/C#/PHP/VB.NET/JavaScript/ActionScript 的代码传递给我。
【问题讨论】:
-
编译器同样会解析代码!!!
-
因为对于常规数组,您需要在编译时指定数组嵌套的深度,常规数组无法做到这一点。您必须创建包含字符串数组和节点数组的节点。
-
@MrFox:使用 PHP 或 ActionScript/JavaScript 怎么样?
-
@MrFox:不正确。例如,如果所有 {} 都替换为 (),那么他正在查看一个常规的 Lisp 列表。对于大多数其他语言,逗号也是必需的。只需将文件放入您想使用的任何语言的自然形式的数组中,然后让语言进行解析。
-
当有人发布一个完整的任务而不是一个问题并寻找一个完整的解决方案而不是提示时,它让我想:这到底是什么。你有没有写出一些代码……这只是一个简单的算法。没那么难!您甚至可以通过搜索网络找到一些解决方案