2010-10-15 58 views

回答

6

Linguistics怎麼樣?它不是內置的。如果你想建於,你必須將它設置使用哈希值等。 見here也爲例子

+1

哇,這個類已被移植到PHP ..?很好,+1 – dmp 2010-10-15 10:26:35

+0

對我很好。謝謝 – Yen 2010-10-18 01:37:52

+0

我認爲「第一個」是縱座標方法,「1st」是順序方法 – rogerdpack 2011-09-01 23:40:25

15

這不回答你的問題準確,並且不會在Ruby的工作,但如果你是在Rails的,您可以使用ordinalize1轉換爲1st,22nd,依此類推。

例子:

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

如果你想在大量逗號:

number_with_delimiter(1000, :delimiter => ',') + 1000.ordinal # => "1,000th" 
+3

這隻適用於Rails。 – Raf 2015-02-17 05:34:38

5

我想有 「第一,第二,第三」,而不是「第一,第二的ordinalize方法, 3rd' - 所以這裏有一小段代碼可以運行10次(如果找不到它,可以退回到Rails的序列化)。

class TextOrdinalize 

    def initialize(value) 
    @value = value 
    end 

    def text_ordinalize 
    ordinalize_mapping[@value] || @value.ordinalize 
    end 

    private 

    def ordinalize_mapping 
    [nil, "first", "second", "third", "fourth", "fifth", "sixth", "seventh", 
     "eighth", "ninth", "tenth" ] 
    end 

end 

下面是它如何工作的:

TextOrdinalize.new(1).text_ordinalize #=> 'first' 
TextOrdinalize.new(2).text_ordinalize #=> 'second' 
TextOrdinalize.new(0).text_ordinalize #=> '0st' 
TextOrdinalize.new(100).text_ordinalize #=> '100th' 
+0

您可以在'#ordinalize_mapping'中使用「零」而不是'nil' – 2017-11-08 11:31:29

0

使用人性化的寶石,可能是最簡單的方法。但是,是的,它不是內置的,但它只有一個依賴,所以我認爲它是一個不錯的選擇。

require 'humanize' 

2.humanize => "two"