如何将字符串转换为数组

Ach*_*ius 5 ruby-on-rails-3.1

我有字符串str ="[123,345,567]".我想将其转换为数组arr = [123,345,567].这该怎么做?

Joa*_*son 22

如果你知道字符串包含一个数组,你可以只使用它eval;

arr = eval(str)
Run Code Online (Sandbox Code Playgroud)

如果你不确定,你可以更多地参与删除括号,拆分,并将数字收集到数组中;

arr = str[1..-2].split(',').collect! {|n| n.to_i}
Run Code Online (Sandbox Code Playgroud)

这里演示.

  • 哇,那里,牛仔!没那么快.Eval非常危险.如果str来自邪恶的互联网,例如作为一个参数,你的应用程序可能正在运行任何东西.想象一下,黑客将这个str param从"[123,456,789]"更改为"User.destroy_all".使用第二个选项更安全,并解析出ID. (6认同)