"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

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

  if str1.downcase == str2.downcase
    puts 'equal'
  else
    puts 'not equal'
  end

Jacob Fugal

···

On 3/21/06, Shea Martin <null@void.0> 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?

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

On 3/21/06, Jacob Fugal <lukfugl@gmail.com> wrote:

On 3/21/06, Shea Martin <null@void.0> 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 Fugal

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

puts "Test".eq("test")

···

true

--- Ursprüngliche Nachricht ---
Von: "Jacob Fugal" <lukfugl@gmail.com>
An: ruby-talk@ruby-lang.org (ruby-talk ML)
Betreff: Re: "str1" == "STR1" case insensitive
Datum: Wed, 22 Mar 2006 04:06:44 +0900

On 3/21/06, Shea Martin <null@void.0> 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 Fugal

Peter Ertl wrote:

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

Or you could say:

class String
  alias eq casecmp
end

···

puts "Test".eq("test")
> true

Peter Ertl 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.

···

--- Ursprüngliche Nachricht ---
On 3/21/06, Shea Martin <null@void.0> 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 Fugal

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

--- Ursprüngliche Nachricht ---
Von: "ChrisH" <chris.hulan@gmail.com>
An: ruby-talk@ruby-lang.org (ruby-talk ML)
Betreff: Re: "str1" == "STR1" case insensitive
Datum: Wed, 22 Mar 2006 04:58:50 +0900

Peter Ertl wrote:
> class String
> def eq(arg)
> self.casecmp(arg ) == 0
> end
> end
>

Or you could say:

class String
  alias eq casecmp
end

> puts "Test".eq("test")
> > true

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.

···

--- Ursprüngliche Nachricht ---
Von: Pavel Smerk <smerk@fi.muni.cz>
An: ruby-talk@ruby-lang.org (ruby-talk ML)
Betreff: Re: "str1" == "STR1" case insensitive
Datum: Wed, 22 Mar 2006 22:23:53 +0900

Peter Ertl 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.

>>--- Ursprüngliche Nachricht ---
>>On 3/21/06, Shea Martin <null@void.0> 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 Fugal
>>
>
>
>