我写了几行代码:
if( (user_input.include?('string_a') ||
(user_input.include? ('string_b')) ||
(user_input.include?('string_c')) )
&&
user_input.include?('string_d_keyword'))
....
end # if
是否有任何函数可以通过采用多个参数来简化“多重或字符串匹配”,看起来像这样?
if( (user_input.multi_include_or?('string_a','string_b','string_c'))
&& (user_input.include?('string_d_keyword')))
.....
end # if
我希望在一行中完成所有这些,所以我省略了“case when”的选项。
感谢〜
答案 0 :(得分:2)
您可以使用|
(或)进行正则表达式匹配:
if user_input.match? /string_a|string_b|string_c|string_d_keyword/
…
end
如果你的字符串在一个数组中,你可以使用Regex.union
将它们转换为相应的正则表达式:
if user_input.match? Regex.union(strings)
…
end
答案 1 :(得分:0)
使用数组和any?
> user_input = "string_a"
=> "string_a"
> ["asd","string_a"].any? {|a| user_input.include? a}
=> true