Posted at

Rubyでさくっと1st, 2nd, 3rd, 4thという文字列を作りたい!

More than 5 years have passed since last update.

小ネタです。

ActiveSupportならもう既に数字から"1st", "2nd"とかの文字列をきれいに作るなにかがあるに違いない。

と思ったらやっぱりありました。ordinalizeメソッド

require 'active_support/core_ext/integer/inflections'

1.ordinalize
# => "1st"
2.ordinalize
# => "2nd"
3.ordinalize
# => "3rd"
4.ordinalize
# => "4th"

# 2桁でもちゃんとやってくれる!
21.ordinalize
# => "21st"

#負の数でもいけちゃいました
-1.ordinalize
# => "-1st"

ちなみに

(1.5).ordinalize

# NoMethodError: undefined method `ordinalize' for 1.5:Float

Floatには定義されてません。そりゃそうか。

あと、

0.ordinalize

# => "0th"

0のときって"0th"なんだ!