2010-10-15 13 views

risposta

6

Come su Linguistics? Non è costruito però. Se vuoi incorporarlo, devi configurarlo usando hash, ecc. Vedi anche per esempi

+1

wow, è quella classe stato portato su php ..? ottimo, +1 – dmp

+0

Va bene per me. grazie – Yen

+0

Credo che "prima" è il metodo ordinata, "prima" è il metodo ordinale – rogerdpack

15

Questo non risponde esattamente alla tua domanda e non funzionerà in Ruby, ma se sei in Rails , è possibile convertire 1-1st, 2-2nd, e così via, utilizzando ordinalize.

Esempio:

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

E se si vuole virgole in gran numero:

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

Questo funziona solo in Rails però. – Raf

5

Volevo un metodo ordinalize che ha "primo, secondo, terzo" piuttosto che '1 °, 2 °, 3 ° - ecco un piccolo frammento che funziona fino a 10 (e ritorna all'ordinamento Rails se non riesce a trovarlo).

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 

Ecco come funziona:

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

Puoi usare "zeroth" invece di 'nil' in' # ordinalize_mapping' –

0

Utilizzando umanizzare la gemma, è probabilmente il modo più semplice. Ma, sì, non è costruito in, ma ha solo una dipendenza, quindi penso che la sua una scelta abbastanza buona ..

require 'humanize' 

2.humanize => "two" 
Problemi correlati