Newbie Ruby pytanie:Ruby: Czy ciąg w liście wartości
Obecnie piszę:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
istnieje neater sposób to zrobić?
Newbie Ruby pytanie:Ruby: Czy ciąg w liście wartości
Obecnie piszę:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
istnieje neater sposób to zrobić?
Istnieją dwa sposoby:
RegEx:
if mystring =~ /^value(A|B|C)$/ # Use /\Avalue(A|B|C)\Z/ here instead
# do something # to escape new lines
end
Albo, bardziej wyraźnie,
if ["valueA", "valueB", "valueC"].include?(mystring)
# do something
end
nadzieję, że pomoże!
Jak „bout
if %w(valueA valueB valueC).include?(mystring)
# do something
end
Zakładając, że chcesz, aby rozszerzyć tę funkcjonalność z innymi grupami meczu, można też użyć sprawy:
case mystring
when "valueA", "valueB", "valueC" then
#do_something
when "value1", "value2", "value3" then
#do_something else
else
#do_a_third_thing
end
w Ruby, naprawdę powinieneś dotrzeć do kotew \ A i \ Z, chyba że masz pewność, że ciąg zawiera zero nowych linii. –
@glennjackman, Czy zamiast tego będzie to '/ \ Avalue (A | B | C) \ Z /'? – jerhinesmith
tak, rzeczywiście. Wpływa to niestety na czytelność. –