2012-03-28 96 views
0

修改散列陣列中的修改在數組中的哈希值紅寶石使用GSUB

{:sku=>"TP-PA211", :desc=>"description", :qty=>"", :qty2=>"1 en su sucursal", :price=>"30.02 D"} 

我想修改與GSUB數組的名字是details2

當我這樣做的哈希qty2:

details2.collect {|item| item[:qty2].gsub(/[^\d]/, '') } 

我得到所有修改後的值。

哈希qty2 =>「1 en su sucursal」需要更改爲qty2 =>「1」,所以使用.gsub(/ [^ \ d] /,'')可以完成,但怎麼做我改變了哈希值!?考慮到它的一系列哈希。

嘗試這樣做:

details2{|item| item[:qty2] = item[:qty2].gsub(/[^\d]/, '') } 
+1

一點也不清楚。你想得到什麼?你得到了什麼? – 2012-03-28 22:28:17

+0

@Sergio the Hash qty2 =>「1 en su sucursal」需要更改爲qty2 => 1,因此使用.gsub(/ [^ \ d] /,'')可以完成,但是如何更改散列的值!?考慮到它的一系列哈希。 – ingalcala 2012-03-28 22:31:41

+0

在下面回答。 – 2012-03-28 22:34:40

回答

2

如果你想就地更新項目,那麼你不需要collect。有一個更簡單的方法。試試這個:

details2.each {|item| item[:qty2].gsub!(/[^\d]/, '') } 

這應該替換你的字符串就地。

+0

太棒了!所以每個更新數組中的值:O。謝啦。 – ingalcala 2012-03-28 22:36:16

+3

'each'不會更新任何內容。它只是迭代元素。 'gsub!'進行更新。 – 2012-03-28 22:37:15