ruby多个字符串匹配

时间:2017-02-21 22:03:58

标签: ruby

我写了几行代码:

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”的选项。

感谢〜

2 个答案:

答案 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