1

我有一个看起来像这样的 API 的输出......(它是一个字符串)

[[2121212,212121,asd],[2323232,23232323,qasdasd]]

它是一个字符串 - 不是一个数组。我想将它转换为一个数组,然后将嵌套数组中每个数组的前两个元素提取为:

[2121212,212121],[2323232,23232323]

做这个红宝石的最好方法是什么?我可以使用正则表达式和提取 - 但基本上字符串已经是一个数组,但是类是一个字符串。

我试过

array.push(response)

但这只是将字符串作为一个元素放入数组中。我想好的是一个 to_array 方法

4

3 回答 3

2

如果不是 eval (shrudder ...),你无论如何都需要使用正则表达式,这是最短的一个

str = "[[2121212,212121,asd],[2323232,23232323,qasdasd],[2424242,24242424,qasdasd]]"
p str.scan(/(\d+),(\d+)/)

=>[["2121212", "212121"], ["2323232", "23232323"], ["2424242", "24242424"]]
于 2012-04-23T12:51:55.750 回答
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]]
于 2012-04-23T10:08:20.840 回答
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]]
于 2012-04-23T13:01:42.730 回答