首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails中某些复合词的复数规则

Rails中某些复合词的复数规则
EN

Stack Overflow用户
提问于 2015-01-09 18:04:54
回答 2查看 401关注 0票数 2

我想为一些没有正确多元化的术语创建一个多元规则。我将把它放在我的inflections.rb文件中。

这些术语是一些复合词,我可以把第一个词,而不是第二个词多元化,但是,在我的例子中,我没有选择只在第一个词上应用多元函数。例如:

'base of knowledge'.pluralize应该返回'bases of knowledge'而不是'base of knowledges'

我尝试使用像这个/\sof\s/这样的regexp来查找字符串上的of部分,但是无法编写规则来正确地转换。

Inflect.plural(?)

我不是在找语言上的解决办法,比如“知识库”。这个例子只是说明性的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-12 12:30:39

通过添加以下规则,我找到了一种改变复合词的方法:

inflect.plural(/(^\w+)\s(of\s\w+)/i,'\1s \2')

然后我得到了:

‘知识基础’.多元->‘知识库’

如预期

票数 1
EN

Stack Overflow用户

发布于 2015-01-09 18:40:53

试试这个:

  1. 创建一个名为:config/initializers/inflections.rb的文件
  2. 简单的非动态示例: ActiveSupport::Inflector.inflections确实影响inflect.irregular‘知识库’,‘知识基础’结束 这只需要你指定每个不规则的复数短语,而不是一个单词。只要您调用多元化方法,它就会找到它。

编辑:

如果您只想要一个方法来处理所有这些类型的更改。您可以定义一个irregular_pluralize方法,它接受与复数相同的输入,或者接受3个对象。

代码语言:javascript
复制
def irregular_pluralize(count, string)
  if count > 1
    split_string = string.split(" ")
    size = split_string.size
    first = split_string.first
    first.pluralize + " " + split_string.last(size - 1).join(" ")
  else
    string
  end
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27866538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档