ruby-on-rails - Ruby on Rails - 除非多个条件

标签 ruby-on-rails ruby string methods gsub

我正在尝试替换一个表达式,除非该表达式是两个值之一。

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/

相关文章:

javascript - Ruby 代码块与 javascript 匿名函数的区别

java - 字符串的无效递归反转方法

c++ - const char[] 和 char[] 的区别

python - 将字符串与列表中的单词匹配

ruby-on-rails - 如何处理 Ruby API 包装器的身份验证?

ruby-on-rails - 使用GET请求的Rails表单:如何删除按钮和utf8参数?

jquery - 使用 CSS 和 ROR 在导航栏中调整大小并创建响应式 Logo

mysql - Rails 测试数据库缺少主键

javascript - 如何使用javascript附加rails复选框标签?

ruby-on-rails - rails 2 : test 'link_to' and other view helpers from the rails console?