我想将以下字符串转换为数组/嵌套数组:
str = "[[this, is],[a, nested],[array]]"
newarray = # this is what I need help with!
newarray.inspect # => [['this','is'],['a','nested'],['array']]发布于 2008-09-02 22:39:28
您将通过YAML得到您想要的东西。
但是你的字符串有一个小问题。YAML期望逗号后面有一个空格。所以我们需要这个
str = "[[this, is], [a, nested], [array]]"代码:
require 'yaml'
str = "[[this, is],[a, nested],[array]]"
### transform your string in a valid YAML-String
str.gsub!(/(\,)(\S)/, "\\1 \\2")
YAML::load(str)
# => [["this", "is"], ["a", "nested"], ["array"]]发布于 2008-09-18 02:55:35
您也可以将其视为几乎JSON。如果字符串真的只是字母,就像您的示例中一样,那么这将是可行的:
JSON.parse(yourarray.gsub(/([a-z]+)/,'"\1"'))如果它们可以包含任意字符(而不是,),则需要更多的字符:
JSON.parse("[[this, is],[a, nested],[array]]".gsub(/, /,",").gsub(/([^\[\]\,]+)/,'"\1"'))发布于 2008-09-01 22:06:45
作为笑料:
ary = eval("[[this, is],[a, nested],[array]]".gsub(/(\w+?)/, "'\\1'") )
=> [["this", "is"], ["a", "nested"], ["array"]]免责声明:你绝对不应该这样做,因为eval是一个糟糕的想法,但它很快,并且有一个有用的副作用,如果你的嵌套数组无效,就会抛出一个异常
https://stackoverflow.com/questions/38409
复制相似问题