我有一个ruby哈希如下。该值是一个逗号分隔的字符串。
def fruits
f = {"fruits" => "apple, orange, grapes"}
end
如何从此值中删除apple。因此,它只能包含“苹果”值。
f = {"fruits" => "apple"}
这样做gsub会在下面这样做时抛出nil错误。
f.each{|k,v| v.gsub!("apple","").gsub!("apple,","")}
答案 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"