2010-01-21 7 views

Répondre

34

Il y a deux façons:

RegEx:

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

Ou, plus explicitement,

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

Hope that helps!

+0

Dans Ruby, vous devriez vraiment atteindre pour les ancres \ A et \ Z sauf si vous êtes sûr que la chaîne contient zéro saut de ligne. –

+0

@glennjackman, Serait-ce '/ \ Avalue (A | B | C) \ Z /' à la place? – jerhinesmith

+0

oui, en effet. Cela nuit malheureusement à la lisibilité. –

5

Comment « bout

if %w(valueA valueB valueC).include?(mystring) 
    # do something 
end 
1

présumant que vous voudriez étendre cette fonctionnalité avec d'autres groupes de match, vous pouvez également utiliser le cas:

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