我正在尝试替换一个表达式,除非该表达式是两个值之一。
def substitute_string (string)
string.gsub('abc', 'xyz') unless string == ('dabc' || 'eabc')
end
substitute_string('jjjjjabc')
=> 'jjjjjxyz'
substitute_string('dabc')
=> 'dabc'
substitute_string('eabc')
=> 'exyz'
我希望 substitute_string('eabc') 返回 ('eabc'),因为我在 unless block 中声明了这一点,我传递了两个值。
我不明白为什么这不起作用,以及我可以做些什么来让“eabc”返回“eabc”。
最佳答案
('dabc' || 'eabc')
是一个 bool 表达式,计算结果为 true
并返回 'dabc'。
使用两个或:
除非字符串 == 'dabc' ||字符串 == 'eabc'
或者使用=~
(正则表达式模式匹配)
unless string =~/(dabc|eabc)/
既然您指出您正在使用 Rails,您也可以像这样使用 in?
:
除非 string.in? ['dabc', 'eabc']
关于ruby-on-rails - Ruby on Rails - 除非多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070955/