Ruby NOT Rails中是否有复数函数?

aar*_*ona 52 ruby require pluralize

我正在编写一些Ruby代码,而不是Rails,我需要处理这样的事情:

found 1 match
found 2 matches
Run Code Online (Sandbox Code Playgroud)

我安装了Rails所以也许我可以require在脚本的顶部添加一个子句,但有没有人知道一个多元化字符串的RUBY方法?如果脚本不是Rails但我安装了Rails,是否有一个我可以要求的类可以解决这个问题?

编辑:所有这些答案都很接近,但我检查了让它为我工作的那个.在编写Ruby而不是Rails代码时尝试使用此方法作为帮助:

def pluralize(number, text)
  return text.pluralize if number != 1
  text
end
Run Code Online (Sandbox Code Playgroud)

sca*_*ney 73

实际上你需要做的就是

require 'active_support/inflector'
Run Code Online (Sandbox Code Playgroud)

这将扩展String类型.

你可以做

"MyString".pluralize
Run Code Online (Sandbox Code Playgroud)

将返回

"MyStrings"
Run Code Online (Sandbox Code Playgroud)

为2.3.5尝试:

require 'rubygems'
require 'active_support/inflector'
Run Code Online (Sandbox Code Playgroud)

应该得到它,如果没有尝试

sudo gem install activesupport
Run Code Online (Sandbox Code Playgroud)

然后是要求.


euk*_*ras 55

在大多数情况下,变形器太过分了.

def x(n, singular, plural=nil)
    if n == 1
        "1 #{singular}"
    elsif plural
        "#{n} #{plural}"
    else
        "#{n} #{singular}s"
    end
end
Run Code Online (Sandbox Code Playgroud)

把它放在common.rb中,或者你喜欢的通用实用功能和...

require "common" 

puts x(0, 'result') # 0 results
puts x(1, 'result') # 1 result
puts x(2, 'result') # 2 results

puts x(0, 'match', 'matches') # 0 matches
puts x(1, 'match', 'matches') # 1 match 
puts x(2, 'match', 'matches') # 2 matches 
Run Code Online (Sandbox Code Playgroud)


haw*_*awx 11

我个人喜欢语言学宝石,绝对不是与轨道相关的.

# from it's frontpage
require 'linguistics'

Linguistics.use :en

"box".en.plural #=> "boxes"
"mouse".en.plural #=> "mice"
# etc
Run Code Online (Sandbox Code Playgroud)