我有字符串["10000", "10001"]
(请不要问为什么它是字符串,我在一个家伙之后修复错误...)现在我遇到将每个数字拆分为单独项目的问题,所以例如我想要像[10000, 10001]
这样的数组,但是编写正确的RegExp时遇到了很大的问题。现在我这样做了:
items.gsub(/[^\d]/, '').scan(/./).each do |collection_id|
my code here
end
适用于1位数字ID,但不适用于多种:-(。你能帮帮我吗?
答案 0 :(得分:4)
string = '["10000", "10001"]'
string.scan(/\d+/).map(&:to_i)
# => [10000, 10001]
解释
.scan(/d+/)
方法返回仅包含数字的所有字符块的数组:
string.scan(/\d+/)
# => ["10000", "10001"]
.map(&:to_i)
对结果数组中的每个元素执行方法.to_i
,并从结果中创建一个新数组。
答案 1 :(得分:1)
我尝试使用YAML
:
2.1.0 :001 > string = '["10000", "10001"]'
=> "[\"10000\", \"10001\"]"
2.1.0 :002 > require 'yaml'
=> true
2.1.0 :003 > YAML.load(string).map(&:to_i)
=> [10000, 10001]
答案 2 :(得分:1)
你可以试试这个:
"[\"10000\", \"10001\"]".gsub(/\[|\]|"/, '').split(",").map{ |s| s.to_i }
有:
1)用空字符串替换字符[,]和“。”
2)在逗号上分割结果字符串
3)将字符串映射到整数并返回结果数组