有没有人知道Rails Helper可以自动将相应的文章添加到给定的字符串中?例如,如果我将“apple”传递给该函数,它将变成“一个苹果”,而如果我要发送“香蕉”它将返回“香蕉”
我已经检查了Rails TextHelper module但找不到任何内容。如果这是重复的道歉,但无可否认,这是一个难以回答的搜索...
答案 0 :(得分:37)
我不知道但是为此写一个帮助似乎很简单? 在我的头顶
def indefinite_articlerize(params_word)
%w(a e i o u).include?(params_word[0].downcase) ? "an #{params_word}" : "a #{params_word}"
end
希望有所帮助
编辑1:还发现这个帖子带有一个补丁,可以帮助你更加防范https://rails.lighthouseapp.com/projects/8994/tickets/2566-add-aan-inflector-indefinitize
答案 1 :(得分:13)
现在有一个宝石:indefinite_article。
答案 2 :(得分:4)
好像检查第一个字母是元音会让你大部分都在那里,但有边缘情况:
(source)
答案 3 :(得分:3)
我知道以下答案对于实际的简单实现来说太过分了,但是如果有人想在某种程度的实施中准确地做到这一点。
规则实际上非常简单,但问题是规则依赖于发音,而不是拼写:
如果初始声音是元音声音(不一定是元音字母),则前置'an',否则前置'a'。
参考约翰的例子:
'一小时',因为这里的'h'是元音,而'是'历史',因为这里的'h'是一个辅音。 'NBC'因为这里的'N'被读作'en',而'是'NATO',因为这里的'N'被读作'n'。
所以这个问题被简化为发现:“某些字母的发音何时发音为元音”。为了做到这一点,你需要以某种方式访问一个具有每个单词的语音表示的字典,并检查它的初始音素。
答案 4 :(得分:2)
查看http://deveiate.org/projects/Linguistics/wiki/English - 它提供了无限期文章的处理等等。我在很多项目中成功使用过它。
答案 5 :(得分:1)