拆分字符串在Ruby中看作数组到数组

时间:2014-04-23 12:48:35

标签: ruby regex

我有字符串["10000", "10001"](请不要问为什么它是字符串,我在一个家伙之后修复错误...)现在我遇到将每个数字拆分为单独项目的问题,所以例如我想要像[10000, 10001]这样的数组,但是编写正确的RegExp时遇到了很大的问题。现在我这样做了:

items.gsub(/[^\d]/, '').scan(/./).each do |collection_id|
  my code here
end

适用于1位数字ID,但不适用于多种:-(。你能帮帮我吗?

3 个答案:

答案 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)将字符串映射到整数并返回结果数组