在属性中搜索子字符串

时间:2015-07-19 03:44:18

标签: ruby

我试图从包含给定子字符串的对象属性中删除所有空格。例如,我有一个对象event和属性:4IP23IP52IP1。我想做以下事情:

event[4IP2].gsub(/\s+/, '')

以通用方式,即

event[*IP*].gsub(/\s+/, '')

适用于所有属性4IP23IP52IP1。感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

假设event是一个哈希值,你可以去:

▶ event = { '4IP2' => 'a b c', '3GG5' => 'ffff f', '2IP1' => 'ggg   ' }
▶ event.map { |k, v| [k, /IP/ =~ k ? v.delete(' ') : v] }.to_h
#⇒ { "2IP1" => "ggg", "3GG5" => "ffff f", "4IP2" => "abc" }

答案 1 :(得分:0)

如果要原位替换属性:

event.each {|k,v| v.gsub!(/\s+/, '') if /IP/ =~ k}

否则,要创建副本:

Hash[event.map {|k,v| [k, /IP/ =~ k ? v.gsub(/\s+/, '') : v]}]