从ruby哈希中删除一个元素

时间:2017-06-30 11:58:51

标签: ruby

我有一个ruby哈希如下。该值是一个逗号分隔的字符串。

def fruits
  f = {"fruits" => "apple, orange, grapes"}
end

如何从此值中删除apple。因此,它只能包含“苹果”值。

f = {"fruits" => "apple"}

这样做gsub会在下面这样做时抛出nil错误。

f.each{|k,v| v.gsub!("apple","").gsub!("apple,","")}

2 个答案:

答案 0 :(得分:2)

将它视为数组怎么样?

f['fruits'] = f['fruits'].split(', ').reject { |w| w == 'apple' }.join(', ')

答案 1 :(得分:0)

删除任意数量水果的通用解决方案:

f = {"fruits" => "apple, orange, grapes"}
f.merge({'fruits' => 'apple'}) do |_, v1, v2|
  [v1, v2].map { |v| v.split(', ') }.reduce(:-).join(', ')
end
#⇒ "orange, grapes"