2010-01-21 14 views

risposta

34

Ci sono due modi:

RegEx:

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

O, più esplicitamente,

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

Speranza che aiuta!

+0

In Ruby, si dovrebbe davvero raggiungere per ancoraggi \ A e \ Z a meno che non si sia sicuri che la stringa contenga zero ritorni a capo. –

+0

@glennjackman, sarebbe invece '/ \ Avalue (A | B | C) \ Z /'? – jerhinesmith

+0

sì, davvero. Sfortunatamente compromette la leggibilità. –

5

Come 'bout

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

Presumendo che ci si vuole estendere questa funzionalità con altri gruppi di corrispondenza, si potrebbe anche usare caso:

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