我有以下代码可以正常使用
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
答案 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