将Array转换为String并返回Array

时间:2014-06-19 16:09:31

标签: ruby arrays string

我已经构建了一个presenter类,其唯一的工作是将给定的数组转换为字符串。我正在测试驱动解决方案,所以我从"[nil, nil, nil]"开始,但每个nil最终将被替换为字母。该功能由另一个类处理。

我现在正在尝试构建一个接口,其唯一的工作就是将该字符串转换回数组。所以我需要转换,例如"[\"a\", \"b\", nil]"返回["a", "b", nil]。但我被卡住了。

例如,我想转换

"[nil, nil, nil]"

 [nil, nil, nil]

我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

只需使用:

eval(string)

eval("[nil, nil, nil]")

<强> 注意:

这是一种非常不安全的方法,只有在您完全确定该字符串包含SAFE数组时才必须使用它。

答案 1 :(得分:3)

我猜你自己就是在一边制作弦乐,例如:

arr = [nil, nil, nil]
str = arr.inspect
#=> "[nil, nil, nil]"

我会建议您使用编组库中内置的JSON,YAML或Ruby格式来序列化数组。

JSON

require 'json'

arr = [nil, nil, nil]
str = JSON.dump(arr)
#=> "[null,null,null]"

JSON.load(str)
#=> [nil, nil, nil]

YAML

require 'yaml'

arr = [nil, nil, nil]
str = YAML.dump(arr)
#=> "---\n- \n- \n- \n"

YAML.load(str)
#=> [nil, nil, nil]

元帅

arr = [nil, nil, nil]
str = Marshal.dump(arr)
#=> "\x04\b[\b000"

Marshal.load(str)
#=> [nil, nil, nil]