【问题标题】:How to check if a string is one of several distinct values?如何检查一个字符串是否是几个不同的值之一?
【发布时间】:2013-07-08 12:39:14
【问题描述】:

我有一个字符串变量,它只能包含 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']

【问题讨论】:

  • 今天这对某人很有用:thumbsup:

标签: ruby arrays string


【解决方案1】:

你可以使用include?:

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

【讨论】:

  • 啊,反过来。我认为它很优雅,谢谢。
  • 我更喜欢Array#index 以减少击键......对于这种情况。 :)) 相同的口味.. 我觉得 :D
  • 对于字符串,您甚至可以改用%w(val1 val2 val3 val4) 来进一步缩短它。
【解决方案2】:
case string
when *%w[val1 val2 val3 val4]
  ...
else
  ...
end

【讨论】:

    【解决方案3】:

    Array#index

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2022-03-31
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多