首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将带括号的Ruby字符串转换为数组?

如何将带括号的Ruby字符串转换为数组?
EN

Stack Overflow用户
提问于 2008-09-01 20:44:47
回答 5查看 10.1K关注 0票数 9

我想将以下字符串转换为数组/嵌套数组:

代码语言:javascript
复制
str = "[[this, is],[a, nested],[array]]"

newarray = # this is what I need help with!

newarray.inspect  # => [['this','is'],['a','nested'],['array']]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-02 22:39:28

您将通过YAML得到您想要的东西。

但是你的字符串有一个小问题。YAML期望逗号后面有一个空格。所以我们需要这个

代码语言:javascript
复制
str = "[[this, is], [a, nested], [array]]"

代码:

代码语言:javascript
复制
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"]]
票数 11
EN

Stack Overflow用户

发布于 2008-09-18 02:55:35

您也可以将其视为几乎JSON。如果字符串真的只是字母,就像您的示例中一样,那么这将是可行的:

代码语言:javascript
复制
JSON.parse(yourarray.gsub(/([a-z]+)/,'"\1"'))

如果它们可以包含任意字符(而不是,),则需要更多的字符:

代码语言:javascript
复制
JSON.parse("[[this, is],[a, nested],[array]]".gsub(/, /,",").gsub(/([^\[\]\,]+)/,'"\1"'))
票数 4
EN

Stack Overflow用户

发布于 2008-09-01 22:06:45

作为笑料:

代码语言:javascript
复制
 ary = eval("[[this, is],[a, nested],[array]]".gsub(/(\w+?)/, "'\\1'") )
 => [["this", "is"], ["a", "nested"], ["array"]]

免责声明:你绝对不应该这样做,因为eval是一个糟糕的想法,但它很快,并且有一个有用的副作用,如果你的嵌套数组无效,就会抛出一个异常

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档