如何检查字符串是否是几个不同的值之一?

时间:2013-07-08 12:39:15

标签: ruby arrays string

我有一个字符串变量,只能包含6个不同的值。我想检查它是否包含前4个值之一或2个秒值之一。

是否有比这更优雅的方式:

if string.eql? 'val1' || string.eql? 'val2' || string.eql? 'val3' || string.eql? 'val4'
  ...
elsif string.eql? 'val5' || string.eql? 'val6'
  ...
end

也许像if string is in ['val1', 'val2', 'val3', 'val4']

3 个答案:

答案 0 :(得分:16)

您可以使用include?

if ['val1', 'val2', 'val3', 'val4'].include?(string)

答案 1 :(得分:1)

case string
when *%w[val1 val2 val3 val4]
  ...
else
  ...
end

答案 2 :(得分:0)

Array#index

  

返回ary中第一个对象的索引,使对象为== to obj。 如果未找到匹配项,则返回nil。

puts "something" if ['val1', 'val2', 'val3', 'val4'].index("val1")
# >> something