【问题标题】:Ruby modify a hash value in a Array using gsubRuby 使用 gsub 修改数组中的哈希值
【发布时间】:2012-04-12 13:53:23
【问题描述】:

修改数组中的哈希

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

我想用gsub修改hash qty2 数组名是details2

当我这样做时:

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

我得到所有修改后的值。

Hash qty2=>"1 en su sucursal" 需要更改为 qty2=>"1" ,所以使用 .gsub(/[^\d]/, '') 可以做到,但是我该怎么做改变哈希值!?考虑到它是一个哈希数组。

试过这个:

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

【问题讨论】:

  • 一点都不清楚。你想得到什么?你得到了什么?
  • @Sergio the Hash qty2=>"1 en su sucursal" 需要改成qty2=>1,所以使用.gsub(/[^\d]/, '') 可以完成了,但是如何更改哈希值!?考虑到它的哈希数组。

标签: ruby arrays hash gsub


【解决方案1】:

如果您尝试就地更新项目,则不需要collect。有一个更简单的方法。试试这个:

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

这应该就地替换你的字符串。

【讨论】:

  • 太棒了!所以每个更新数组中的值:O。谢谢老兄。
  • each 不会更新任何内容。它只是迭代元素。 gsub! 进行更新。
猜你喜欢
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2017-08-16
  • 2016-12-16
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多