2014-04-23 148 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雖然編輯。 –