如何在Ruby中将1转换为"first",2到"second"等等?

Yen*_*Yen 21 ruby

Ruby中是否有内置方法来支持它?

Asn*_*tta 22

这不回答你的问题准确,并且不会在Ruby的工作,但如果你是在Rails中,你可以转换1到1st,2对2nd等,使用ordinalize.

例:

1.ordinalize # => "1st"
2.ordinalize # => "2nd"
3.ordinalize # => "3rd"
...
9.ordinalize # => "9th"
...
1000.ordinalize # => "1000th"
Run Code Online (Sandbox Code Playgroud)

如果你想要大量的逗号:

number_with_delimiter(1000, :delimiter => ',') + 1000.ordinal # => "1,000th"
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 6

语言学怎么样?它不是内置的.如果你想内置,你必须使用哈希等设置它.这里也看到例子


Chr*_*van 6

我想要一个有"第一,第二,第三"而不是"第一,第二,第三"的ordinalize方法 - 所以这里有一个小片段,最多可以工作10个(如果它找不到它,则会回到Rails ordinalize) .

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
Run Code Online (Sandbox Code Playgroud)

以下是它的工作原理:

TextOrdinalize.new(1).text_ordinalize #=> 'first'
TextOrdinalize.new(2).text_ordinalize #=> 'second'
TextOrdinalize.new(0).text_ordinalize #=> '0st'
TextOrdinalize.new(100).text_ordinalize #=> '100th'
Run Code Online (Sandbox Code Playgroud)