Существует ли функция pluralize в Ruby НЕ направляющие?

Я пишу некоторый код Ruby, не направляющие, и я должен обработать что-то вроде этого:

found 1 match
found 2 matches

Мне установили направляющие поэтому, возможно, я смог добавлять a require пункт наверху сценария, но кто-либо знает метода Ruby это строки pluralizes? Существует ли класс, я могу потребовать, чтобы это могло иметь дело с этим, если сценарий не является направляющими, но мне установили направляющие?

Править: Все эти ответы были близки, но я пометил тот, который получил его работающий на меня. Попробуйте этот метод как помощника при записи Ruby, не направляющих, кода:

def pluralize(number, text)
  return text.pluralize if number != 1
  text
end
52
задан the Tin Man 30 December 2011 в 06:50
поделиться

3 ответа

На самом деле все, что вам нужно сделать, это

require 'active_support/inflector'

, и это расширит тип String .

вы можете затем выполнить

"MyString".pluralize

, который вернет

"MyStrings"

для 2.3.5 try:

require 'rubygems'
require 'active_support/inflector'

должен получить его, если не попробуйте

sudo gem install activesupport

, а затем требует.

73
ответ дан 7 November 2019 в 09:06
поделиться
require 'active_support'
require 'active_support/inflector'

inf = ActiveSupport::Inflector::Inflections.new

, чтобы получить инфлектор, не знаю, как его использовать

1
ответ дан 7 November 2019 в 09:06
поделиться

Инфлектор является излишним для большинства ситуаций.

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

Поместите это в 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 
55
ответ дан 7 November 2019 в 09:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: