红宝石使用GSUB
问题描述:
修改散列阵列中的修改在数组中的哈希值红宝石使用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]/, '') }
答
如果你想就地更新项目,那么你不需要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
一点也不清楚。你想得到什么?你得到了什么? – 2012-03-28 22:28:17
@Sergio the Hash qty2 =>“1 en su sucursal”需要更改为qty2 => 1,因此使用.gsub(/ [^ \ d] /,'')可以完成,但是如何更改散列的值!?考虑到它的一系列哈希。 – ingalcala 2012-03-28 22:31:41
在下面回答。 – 2012-03-28 22:34:40