ruby-on-rails - 匹配时的情况

标签 ruby-on-rails regex switch-statement

有没有办法使这个工作在一个案例中正常工作?

field = "head_count_2011_10_75"
case field
  when match(/head_count_\d{4}_\d{1,2}_\d{1,4}/i)
    puts "regex 1"
  when match(/dmi_\d{4}_\d{1,2}_\d{1,4}/i)
    puts "regex 2
end

我知道我可以做到,如果:
if field.match(/head_count_\d{4}_\d{1,2}_\d{1,4}/i)
  puts "regex 1"
elsif field.match(/dmi_\d{4}_\d{1,2}_\d{1,4}/i)
  puts "regex 2"
end

只是在寻找更清洁的解决方案。

最佳答案

只需删除匹配:

field = "head_count_2011_10_75"
case field
  when /head_count_\d{4}_\d{1,2}_\d{1,4}/i
    puts "regex 1"
  when /dmi_\d{4}_\d{1,2}_\d{1,4}/i
    puts "regex 2
end

关于ruby-on-rails - 匹配时的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336351/

相关文章:

ruby-on-rails - 在 Heroku 上预编译失败,initialize_on_precompile 设置为 false

ruby - 通过第一次出现非字母字符来打破字符串?

css - 如何使用正则表达式找到大于 100% 的值?

regex - 使用 [regex] 从 URL 列表中获取带扩展名的 grep 文件名

c - 我用什么代码来询问数量和付款?

ruby-on-rails - Rails 5.0.2 - 关系中的 ID own_to/has_many

ruby-on-rails - 自定义设计 Controller 不工作

ruby-on-rails - Heroku 自定义域 (Namecheap) 不起作用

swift - 在 Swift 中没有 switch 语句的 "case"是什么意思?

c - pop & push 减法和除法