解析具有括号和逗号分隔值的字符串

Posted

技术标签:

【中文标题】解析具有括号和逗号分隔值的字符串【英文标题】:parsing a string which has parenthesis and comma seperated values 【发布时间】:2015-12-02 02:45:00 【问题描述】:

我有一个这样的字符串:

string astr = "a(b,c,u),d,e(f),g(),h,i(j(k,l,m(n))),r";
a 包含 b,c,u e 包含 f i 包含 j j 包含 k,l,m m 包含 n r 不包含任何内容

您可以将其视为文件系统 在具有 () 的输入字母上是文件夹 剩下的就是文件 解析此字符串的正确方法是什么 正则表达式、堆栈函数或简单的字符串解析函数?以及如何?

【问题讨论】:

一个循环和一个堆栈来跟踪你的嵌套程度应该足够了。 如果你想要一个列表中的结果,一个带有非本地列表的递归调用堆栈是要走的路。 只要找到 '(' 就输入一个新的函数调用,并确保在 ')' 处退出。这不是火箭科学。 【参考方案1】:

我认为简单的堆栈和字符串方法就足够了 遍历字符串上的每个字符 创建一个名为 url 的堆栈 当你看到 "(" ")" 或 "," 字符解析它 当你看到 "(" 字符时,将 x( x 推入堆栈 当你看到“)”字符弹出堆栈

您将拥有一个令牌,其 url 指向它所属的位置

【讨论】:

以上是关于解析具有括号和逗号分隔值的字符串的主要内容,如果未能解决你的问题,请参考以下文章

PHP 和 RegEx:用不在括号内的逗号(以及嵌套括号)拆分字符串

mysql中选定值的逗号分隔字符串

JSON对象与字符串相互转化ObjectMapper

Laravel 验证 - 逗号分隔的字符串输入为数组

字符串 CSV解析 表格 逗号分隔值

Java Regex - 拆分逗号分隔列表,但在括号内排除逗号