代码之家  ›  专栏  ›  技术社区  ›  Mike Sutton

Ruby:是值列表中的字符串

  •  13
  • Mike Sutton  · 技术社区  · 16 年前

    新手Ruby问题:

    我目前正在写:

    if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
    

    有没有更整洁的方法?

    3 回复  |  直到 16 年前
        1
  •  46
  •   jerhinesmith    4 年前

    有两种方法:

    正则表达式:

    if mystring =~ /^value(A|B|C)$/ # Use /\Avalue(A|B|C)\Z/ here instead 
       # do something               # to escape new lines
    end
    

    if ['valueA', 'valueB', 'valueC'].include?(mystring)
       # do something
    end
    

    希望有帮助!

        2
  •  7
  •   oenli    16 年前

    if %w(valueA valueB valueC).include?(mystring)
      # do something
    end
    
        3
  •  1
  •   Tim Snowhite    16 年前

    假设您希望将此功能扩展到其他匹配组,您还可以使用以下用例:

    case mystring
    when "valueA", "valueB", "valueC" then
     #do_something
    when "value1", "value2", "value3" then
     #do_something else
    else
     #do_a_third_thing
    end