我的API输出看起来像这样......(它是一个字符串)
[[2121212,212121,asd],[2323232,23232323,qasdasd]]
它是一个字符串 - 不是数组。我想将它转换为数组,然后将嵌套数组中每个数组中的前两个元素提取到:
[2121212,212121],[2323232,23232323]
做红宝石的最佳方法是什么?我可以使用regexp和extract - 但基本上字符串已经是一个数组,但是类是一个字符串。
我试过
array.push(response)
但是这只是将字符串作为一个元素放入数组中。我想最好的是to_array方法
答案 0 :(得分:2)
如果不是eval(shrudder ......),你将需要使用正则表达式,这是最短的
str = "[[2121212,212121,asd],[2323232,23232323,qasdasd],[2424242,24242424,qasdasd]]"
p str.scan(/(\d+),(\d+)/)
=>[["2121212", "212121"], ["2323232", "23232323"], ["2424242", "24242424"]]
答案 1 :(得分:0)
使用eval非常糟糕,但我没有其他简单的选择。
test_str = "[[2121212,212121,asd],[2323232,23232323,qasdasd]]"
test_str.gsub!(/([a-z]+)/) do
"'#{$1}'"
end
=> "[[2121212,212121,'asd'],[2323232,23232323,'qasdasd']]"
test_array = eval(test_str)
=> [[2121212, 212121, "asd"], [2323232, 23232323, "qasdasd"]]
test_array.each do |element|
element.delete(element.last)
end
=> [[2121212, 212121], [2323232, 23232323]]
答案 2 :(得分:0)
假设这是一个JSON响应(如果是这样,它会严重错误,你应该与负责此事的人交谈)你可以写下这样的内容:
require 'json'
input= '[[2121212,212121,Asd],[2323232,23232323,qasdasd]]'
input.gsub!(/([A-Za-z ]+)/,'"\1"')
json = JSON.parse input
output = json.map{|x| x[0...2]}
p output
打印
[[2121212, 212121], [2323232, 23232323]]