我有绳子:
str = "[[591, 184] , [741, 910] , [987,512], [2974, 174]]"我想把它转换成一个数组:
arr = [[591, 184] , [741, 910] , [987,512], [2974, 174]]我该怎么做?
发布于 2017-04-16 05:10:31
JSON解析器应该工作得很好:
require "json"
str = "[[591, 184] , [741, 910] , [987,512], [2974, 174]]"
p JSON.parse(str)
# => [[591, 184], [741, 910], [987,512], [2974, 174]]在eval.in:https://eval.in/777054上试试
发布于 2017-04-16 05:58:20
这样做的一个方法是:
str = "[[591, 184] , [741, 910] , [987,512], [2974, 174]]"
reg = /(?<=\[)[\d,?\s?]+(?=\])/
str.scan(reg).map { |s| s.scan(/\d+/).map(&:to_i) }
#=> [[591, 184], [741, 910], [987, 512], [2974, 174]]或从“乔丹的书”中摘下一页,但使用YAML:
require 'yaml'
str = "[[591, 184] , [741, 910] , [987,512], [2974, 174]]"
YAML.load(str) #=> [[591, 184], [741, 910], [987, 512], [2974, 174]]发布于 2017-04-16 07:42:29
我会分两步split和scan。
str = "[[591, 184] , [741, 910] , [987,512], [2974, 174]]"
str.split(/\]\s*,\s*\[/).map { |s| s.scan(/\d+/).map(&:to_i) }
#=> [[591, 184], [741, 910], [987, 512], [2974, 174]]请注意,
str.split(/\]\s*,\s*\[/)
# => ["[[591, 184", "741, 910", "987,512", "2974, 174]]"] https://stackoverflow.com/questions/43433892
复制相似问题