【发布时间】:2018-01-01 13:10:30
【问题描述】:
默认情况下,#split 方法的工作方式如下:
"id,name,title(first_name,last_name)".split(",")
会给你以下输出:
["id", "name", "title(first_name", "last_name)"]
但我想要以下内容:
["id", "name", "title(first_name,last_name)"]
所以,我使用以下正则表达式(来自 this answer)使用 split 来获得所需的输出:
"id,name,title(first_name,last_name)".split(/,(?![^(]*\))/)
但是,当我再次使用另一个字符串时,这是我上面的实际输入,逻辑失败了。我的实际字符串是:
"id,name,title(first_name,last_name,address(street,pincode(id,code)))"
它给出以下输出:
["id", "name", "title(first_name", "last_name", "address(street", "pincode(id,code)))"]
而不是
["id", "name", "title(first_name,last_name,address(street,pincode(id,code)))"]
【问题讨论】:
-
@nemesv 谢谢。有什么办法可以在 ruby 中实现同样的效果吗?有什么想法吗?
-
Spring#Split 支持正则表达式,因此您只需从链接问题中获取模式:
"id,name,title(first_name,last_name)".split(/,(?![^(]*\))/) -
@fidato 不要使用正则表达式。您正在尝试解析嵌套数据结构,而不是通过分隔符拆分字符串。正则表达式不适合这项工作。
-
@Toto 我们已经确定这不是该问题的重复。它已经作为它的副本关闭并重新打开,它包含那里提供的解决方案,并特别显示了它不起作用的情况。
标签: ruby-on-rails ruby string split