Ruby - 在if语句中添加多个包含

时间:2014-12-20 09:39:29

标签: ruby if-statement include

我有以下代码可以正常使用

if user_input.include? "s"
    user_input.gsub!(/s/ "th")
else
    print "Nothing to change"
end

但是当我想添加另一个include时,它无法识别elsif如何将这些包含在一起添加?

if user_input.include? "s"
    user_input.gsub!(/s/ "th")
elsif user_input.include? "cee"
    user_input.gsub!(/cee/ "th")
else
    print "Nothing to change"
end

4 个答案:

答案 0 :(得分:5)

由于gsub!如果没有任何更改,则返回nil,您可以像这样编写示例:

unless user_input.gsub!(/s|cee/ "th")
  print "Nothing to change"
end

答案 1 :(得分:3)

这是因为if else语句的执行流程。 如果'if'中的条件匹配则不会执行'elseif'块..

if user_input.include?('s') or user_input.include?('cee')
  user_input.gsub!(/s/,"th").gsub!(/cee/,"th")
else
  print "Nothing to change"
end

答案 2 :(得分:2)

您的代码显示错误:

SyntaxError: unexpected ')', expecting keyword_end

你忘记了gsub中的逗号

if user_input.include? "s"
    user_input.gsub!(/s/, "th")
elsif user_input.include? "cee"
    user_input.gsub!(/cee/, "th")
else
    print "Nothing to change"
end

编辑: 如果要进行两次更换,则需要更改为:

old_value = user_input
if user_input.include? "s"
    user_input.gsub!(/s/, "th")
end
if user_input.include? "cee"
    user_input.gsub!(/cee/, "th")
end

if user_input == old8value   
    print "Nothing to change"
end

答案 3 :(得分:1)

匹配第一个if后,其余的将被跳过。

对于您的特定用例,我建议您使用单个gsub,如下所示:

regexp = /s|cee/

if string.match(regexp)
  string.gsub!(regexp, "th")
else
  "Nothing to gsub!"
end