【发布时间】:2018-03-22 18:05:04
【问题描述】:
我有一个 ID 号数组(技术上是一个字符串)。
ids = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
我想把 id 做成一个如下所示的数组:
ids = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我发现这样做的唯一方法是使用地图。
id_numbers = ids.split(/,\s?/).map(&:to_i)
但是,这会删除数组中的第一个数字并将其替换为 0。
id_numbers = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
有没有更好的方法将字符串数组转换为常规数组?
【问题讨论】:
-
不是“技术上”,它是一个字符串,根本不是一个数组。为什么不直接做一个数组呢?
-
eval ids是一种方式。使用 Kernel#eval 时必须小心(出于安全原因),但它是必不可少的 Ruby 方法。 -
@CarySwoveland 使用
eval就像在雷雨中坐在山顶上。这从来都不是一个好的计划,而且很难安全地做到这一点。 -
@tadman,我喜欢这个类比,如果它是一把钢椅并且这个人戴着pickelhaube,那就更好了。
标签: arrays ruby string integer