首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在rails中将字符串转换为数组

在rails中将字符串转换为数组
EN

Stack Overflow用户
提问于 2017-04-16 05:02:31
回答 4查看 2.6K关注 0票数 0

我有绳子:

代码语言:javascript
运行
复制
str = "[[591, 184] , [741, 910] , [987,512], [2974, 174]]"

我想把它转换成一个数组:

代码语言:javascript
运行
复制
arr = [[591, 184] , [741, 910] , [987,512], [2974, 174]]

我该怎么做?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-16 05:10:31

JSON解析器应该工作得很好:

代码语言:javascript
运行
复制
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上试试

票数 6
EN

Stack Overflow用户

发布于 2017-04-16 05:58:20

这样做的一个方法是:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
require 'yaml'
str = "[[591, 184] , [741, 910] , [987,512], [2974, 174]]"
YAML.load(str) #=> [[591, 184], [741, 910], [987, 512], [2974, 174]]
票数 2
EN

Stack Overflow用户

发布于 2017-04-16 07:42:29

我会分两步splitscan

代码语言:javascript
运行
复制
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]]

请注意,

代码语言:javascript
运行
复制
str.split(/\]\s*,\s*\[/)
  # => ["[[591, 184", "741, 910", "987,512", "2974, 174]]"]  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43433892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档