2014-04-23 76 views
0

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

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

与1个IDS的工作原理,但不是多:-(你能帮我请

+0

你有什么字符串数组? –

+2

这项工作 - '2.1.0:001> string ='[“10000”,“10001”]' =>“[\”10000“,”10001“]” 2.1.0:002> yaml' => true 2.1.0:003> YAML.load(string).map(&:to_i) => [10000,10001] 2.1.0:004>' –

+2

它可以被解析为JSON也是:'JSON.parse(string).map(&:to_i)' – Stefan

回答

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] 
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

你可以试试这个:

"[\"10000\", \"10001\"]".gsub(/\[|\]|"/, '').split(",").map{ |s| s.to_i } 

它:
1)替换字符[,]和“空字符串
2)以逗号分割结果字符串
3)将字符串映射到整数并返回结果数组

+0

有人请编辑并解释答案?这是我们的最低质量答案准则的一部分。 –

+0

我认为Uri已经提供了一个体面的解决方案,方法名称应该是自解释的。谢谢@Stefan虽然编辑。 –