【问题标题】:ruby multiple string match with [duplicate]ruby 多个字符串匹配 [重复]
【发布时间】:2017-07-11 18:11:21
【问题描述】:

我已经写了几行这样的代码:

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

谢谢~

【问题讨论】:

  • 在看到我误读了问题后,我删除了我的答案。我认为user_input 是一个字符串数组。很明显它是一个字符串。

标签: ruby


【解决方案1】:

使用数组和any?

> user_input = "string_a"
=> "string_a"
> ["asd","string_a"].any? {|a| user_input.include? a}
=> true

【讨论】:

  • 反对票是怎么回事?这个解决方案有问题吗?
【解决方案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

【讨论】:

  • 感谢您的回复。顺便说一句,我必须使用这种格式才能使其工作:user_input.match( /string_a|string_b/ ) 再次感谢~
猜你喜欢
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2021-02-25
相关资源
最近更新 更多