I assume there is a nice one-line way to say in ruby
if mystr == "abc" or "def " or "ghi" or "xyz"
but cannot find how to do that in the online references I normally consult...
Thanks!
Perhaps you didn't know that you can put multiple conditions on a single case:
case mystr
when "abc", "def", "ghi", "xyz"
..
end
But for this specific string-based test, I would use regex:
if mystr =~ /\A(?:abc|def|ghi|xyz)\z/
If you don't want to construct a regex, and you don't want a case
statement, you can create an array of objects and use Array#include?
test to see if the object is in the array:
if [a,b,c,d].include?( o )
or, by monkey-patching Object, you can even turn it around:
class Object
def in?( *values )
values.include?( self )
end
end
if o.in?( a, b, c, d )
You can use Array#include?
like this:
if ["abc", "def ", "ghi", "xyz"].include?(mystr)
>> mystr="abc"
=> "abc"
>> mystr[/\A(abc|def|ghi|xyz)\z/]
=> "abc"
>> mystr="abcd"
=> "abcd"
>> mystr[/\A(abc|def|ghi|xyz)\z/]
=> nil
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With