id:Naruhodiusさんに倣って僕もやってみました:) class Integer def ordinalize suffix = if (fd=abs%10).between?(1,3) && !abs.between?(11,13) %w(_ st nd rd)[fd] else 'th' end "#{self}" + suffix end end (-25..25).map(&:ordinalize) # => ["-25th", "-24th", "-23rd", "-22nd", "-21st", "-20th", "-19th", "-18th", "-17th", "-16th", "-15th", "-14th", "-13th", "-12th", "-11th", "-10th", "-9th", "-8th", "-7th", "-6th", "-5th",