Ruby: строка в списке значений - PullRequest
15 голосов
/ 22 января 2010

Вопрос новичка Руби:

Я сейчас пишу:

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

Есть ли более аккуратный способ сделать это?

Ответы [ 3 ]

41 голосов
/ 22 января 2010

Есть два способа:

RegEx:

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

Надеюсь, это поможет!

6 голосов
/ 22 января 2010

Как насчет

if %w(valueA valueB valueC).include?(mystring)
  # do something
end
1 голос
/ 23 января 2010

Предполагая, что вы захотите расширить эту функциональность другими группами соответствия, вы также можете использовать case:

case mystring
when "valueA", "valueB", "valueC" then
 #do_something
when "value1", "value2", "value3" then
 #do_something else
else
 #do_a_third_thing
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...