2010-01-21 6 views

Antwort

34

Es gibt zwei Möglichkeiten:

RegEx:

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

Oder deutlicher,

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

Hoffnung, das hilft!

+0

In Ruby, die Sie wirklich für Anker erreichen sollten \ A und \ Z, es sei denn, Sie sind sicher, dass die Zeichenfolge keine Zeilenumbrüche enthält. –

+0

@GlennJackman, wäre das stattdessen '/ \ Wert (A | B | C) \ Z /'? – jerhinesmith

+0

ja, tatsächlich. Es beeinträchtigt leider die Lesbarkeit. –

5

Wie ‚Kampf

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

Vorausgesetzt, Sie diese Funktionalität mit anderen Spiel-Gruppen erweitern würden wollen, können Sie auch Fall verwenden:

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