question Débutant Ruby:Ruby: Est-ce une chaîne dans une liste de valeurs
Je vous écris actuellement:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
est-il un moyen plus propre de le faire?
question Débutant Ruby:Ruby: Est-ce une chaîne dans une liste de valeurs
Je vous écris actuellement:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
est-il un moyen plus propre de le faire?
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!
Comment « bout
if %w(valueA valueB valueC).include?(mystring)
# do something
end
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
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. –
@glennjackman, Serait-ce '/ \ Avalue (A | B | C) \ Z /' à la place? – jerhinesmith
oui, en effet. Cela nuit malheureusement à la lisibilité. –