#### Topic: Turning "22" into "22nd", "1" into "1st", etc, etc.

I've written the following method to add "st", "nd", "rd" or "th" to the end of a number to make it nicer for dates or other numbers representing a position. Any suggestions for how to make it more concise? I would've liked to not add the 0 at the beginning but the numbers 11, 12 and 13 make life harder..

def numeric_position(number)
return number if number == 0

number = "0" + number.to_s unless number =~ /(\d\d)\$/

# Check the last two digits and set the extension
case number.to_s
when /(01|21|31|41|51|61|71|81|91)\$/ then ext = "st"
when /(02|22|32|42|52|62|72|82|92)\$/ then ext = "nd"
when /(03|23|33|43|53|63|73|83|93)\$/ then ext = "rd"
else ext = "th"
end

# Strip the leading 0 if there is one and add to the extension
return number.to_s.sub(/^0/, '') + ext
end

#### Re: Turning "22" into "22nd", "1" into "1st", etc, etc.

rails has a method for this:

1.ordinalize    # => "1st"
2.ordinalize    # => "2nd"
1002.ordinalize # => "1002nd"
1003.ordinalize # => "1003rd"

#### Re: Turning "22" into "22nd", "1" into "1st", etc, etc.

Doh! I thought that might be the case but couldn't think of what it might be called. Thanks!