Regular expression based comparison : String class Extension « String « Ruby






Regular expression based comparison



class String
  alias old_compare <=>

  def <=>(other)
    a = self.dup
    b = other.dup
    # Remove punctuation
    a.gsub!(/\,\.\?\!\:\;/, "")
    b.gsub!(/\,\.\?\!\:\;/, "")
    # Remove initial articles
    a.gsub!(/(a |an |the )/i, "")
    b.gsub!(/(a |an |the )/i, "")
    # Remove leading/trailing whitespace
    a.strip!
    b.strip!
    # Use the old <=>
    a.old_compare(b)
  end

end


title1 = "Calling All Cars"
title2 = "The Call of the Wild"

# Ordinarily this would print "yes"

if title1 < title2
  puts "yes"
else
  puts "no"         # But now it prints "no"
end

 








Related examples in the same category

1.write an extension to the String class to provide it
2.Add method to system type
3.Processing a String One Word at a Time by adding a method to string class
4.Replacing Multiple Patterns in a Single Pass
5.Writing an Inherited Class
6.Override the method from String Class
7.String translation
8.convert string to binary number
9.Removes first character from self and returns it, changing self
10.Adds last character of provided string to front of self
11.Pops last character off self and returns it, changing self
12.Pushes first character of provided string onto end of self
13.Rotate left
14.Rotate right
15.Shifts first word off of self and returns; changes self
16.Adds provided string to front of self
17.Pops and returns last word off self; changes self
18.Pushes provided string onto end of self
19.Get acronym