我已经构建了一个presenter类,其唯一的工作是将给定的数组转换为字符串。我正在测试驱动解决方案,所以我从"[nil, nil, nil]"
开始,但每个nil
最终将被替换为字母。该功能由另一个类处理。
我现在正在尝试构建一个接口,其唯一的工作就是将该字符串转换回数组。所以我需要转换,例如"[\"a\", \"b\", nil]"
返回["a", "b", nil]
。但我被卡住了。
例如,我想转换
"[nil, nil, nil]"
到
[nil, nil, nil]
我怎么能这样做?
答案 0 :(得分:4)
只需使用:
eval(string)
eval("[nil, nil, nil]")
<强> 注意: 强>
这是一种非常不安全的方法,只有在您完全确定该字符串包含SAFE数组时才必须使用它。
答案 1 :(得分:3)
我猜你自己就是在一边制作弦乐,例如:
arr = [nil, nil, nil]
str = arr.inspect
#=> "[nil, nil, nil]"
我会建议您使用编组库中内置的JSON,YAML或Ruby格式来序列化数组。
require 'json'
arr = [nil, nil, nil]
str = JSON.dump(arr)
#=> "[null,null,null]"
JSON.load(str)
#=> [nil, nil, nil]
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]