"str1" == "STR1" case insensitive

For doing case insensitive comparisons, I have been using

if str1.casecmp(str2)==0
puts ‘equal’
else
puts ‘not equal’
end

Is their a way to do this with simpler syntax?

~S

On 3/21/06, Shea M. [email protected] wrote:

For doing case insensitive comparisons, I have been using

if str1.casecmp(str2)==0
puts ‘equal’
else
puts ‘not equal’
end

Is their a way to do this with simpler syntax?

I find String#downcase convenient for these sorts of comparisons:

if str1.downcase == str2.downcase
puts ‘equal’
else
puts ‘not equal’
end

Jacob F.

Hi,

My suggestion is to write a simple convinience method such as:

def are_equal(str1, str2)
str1.casecmp(str2) == 0
end

irb(main):023:0> if are_equal(‘foo’, ‘Foo’)
irb(main):024:1> puts ‘equal’
irb(main):025:1> else
irb(main):026:1* puts ‘not equal’
irb(main):027:1> end
equal


Martins

Peter E. wrote:

class String
def eq(arg)
self.casecmp(arg ) == 0
end
end

Or you could say:

class String
alias eq casecmp
end

class String
def eq(arg)
self.casecmp(arg ) == 0
end
end

puts “Test”.eq(“test”)

true

Peter E. wrote:

class String
def eq(arg)
self.casecmp(arg ) == 0
end
end

puts “Test”.eq(“test”)

true

And how can I define eq as an binary operator on String-s allowing me to
write “Test” eq “test”? (And if this is possible, how can set a priority
for such operator?)

P.

indeed good idea, but it’s not the same:

class String
alias eq2 casecmp
def eq1(arg)
self.casecmp(arg ) == 0
end
end

puts “equal1.1” if “A”.eq1(“a”)
puts “equal2.1” if “A”.eq2(“a”)

puts “equal1.2” if “A”.eq1(“b”)
puts “equal2.2” if “A”.eq2(“b”)

equal1.1
equal2.1
equal2.2

My understanding is that you can only overload existing operators
like ==, !, === but not define custom ones.

Operator overloading should be handled carefully in any case.

I think it is good thing that custom operators
are not allowed / possible.