2010-10-15 2 views

ответ

6

Как насчет Linguistics? Однако он не построен. Если вы хотите, встроенный в систему, вы должны установить его с помощью хешей и т.д .. См here также примеры

+1

wow, этот класс был перенесен на php ..? отлично, +1 – dmp

+0

Это хорошо для меня. спасибо – Yen

+0

Я думаю, что «первым» является метод ординат, «1-й» - порядковый метод – rogerdpack

15

Это не ответ на ваш вопрос точно, и он не будет работать в Ruby, но если вы находитесь в Rails , вы можете конвертировать 1 в 1st, 2 в 2nd и т. д., используя ordinalize.

Пример:

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

5

Я хотел метод ordinalize, который имеет "первый, второй, третий", а не «1-й, 2-й, 3-й »- так вот небольшой фрагмент, который работает до 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

Вы можете использовать «нуль» вместо 'nil' в' # ordinalize_mapping' –

0

Использование гуманизации камень, вероятно, самый простой способ. Но, да, он не встроен, однако он имеет только одну зависимость, поэтому я думаю, что это довольно хороший выбор.

require 'humanize' 

2.humanize => "two" 
Смежные вопросы