Newbie Ruby-Frage:Rubin: Ist ein String in einer Liste von Werten
ich zur Zeit zu schreiben:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
gibt es eine sauberere Art und Weise, dies zu tun?
Newbie Ruby-Frage:Rubin: Ist ein String in einer Liste von Werten
ich zur Zeit zu schreiben:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
gibt es eine sauberere Art und Weise, dies zu tun?
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!
Wie ‚Kampf
if %w(valueA valueB valueC).include?(mystring)
# do something
end
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
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. –
@GlennJackman, wäre das stattdessen '/ \ Wert (A | B | C) \ Z /'? – jerhinesmith
ja, tatsächlich. Es beeinträchtigt leider die Lesbarkeit. –