我正在接收这样的参数"[[201], [511], [3451]]"
,我想将其转换为[201, 511, 3451]
让我们说params是你收到的,你可以使用scan和map来使用正则表达式,查找响应中的数字,然后将数组中的每个项映射为整数:
params = "[[201], [511], [3451]]"
params_array = params.scan(/d+/).map(&:to_i)
我们在这里所做的是通过Scan方法查找字符串并只选择数字,然后我们得到一个字符串数组,因此我们使用Map方法将其转换为整数。根据地图方法,感谢Cary Swoveland对它的更新。
会帮到你的!
str_arr = "[[201], [511], [3451]]"
JSON.parse(str_arr).flatten
or
eval(str_arr).flatten
这里有一种有趣的方法(注意,它只在params是数组字符串的情况下起作用)
arr1 = instance_eval("[1,2,3]")
puts arr1.inspect # [1,2,3]
arr2 = instance_eval("[[201], [511], [3451]]")
puts arr2.inspect # [[201], [511], [3451]]
首先,我会做一个完整性检查,以确保您不会被恶意代码注入:
raise "Can not convert #{params}" if /[^[]d]/ =~ params
现在你可以断言你的字符串是安全的:
params.untaint
,然后转换
arr = eval(params).flatten
或
arr = eval(params).flatten(1)
取决于你想接收什么如果你有深嵌套的"数组">