【发布时间】:2014-05-09 03:18:25
【问题描述】:
我只是想将大写的公司名称转换为专有名称。
公司名称可以包括:
- 破折号
- 撇号
- 罗马数字
- LLC、LP、INC 等文本应保持大写。
我认为我可以使用这样的首字母缩略词:
ACRONYMS = %W( LP III IV VI VII VIII IX GI)
ActiveSupport::Inflector.inflections(:en) do |inflect|
ACRONYMS.each { |a| inflect.acronym(a) }
end
但是,转换不考虑分词,因此 VI 和 VII 不起作用。例如,“ADVISORS”.titleize 的转换为“Ad VI Sors”,因为 VI 变成了一个完整的单词。
破折号被删除。
似乎应该有一个通用 gem 来解决这个通用问题,但我没有找到。这个问题真的不常见吗?除了完全破解当前的变形库之外,最好的解决方案是什么?
【问题讨论】:
-
我在解决同样的问题时偶然发现了这一点。正如您所指出的,将 VI 设置为首字母缩略词确实会导致“ADVISORS”被拆分,但我发现只有当单词全部大写时才会出现这种情况。小写的“顾问”不会得到同样的对待。由于您最终要进行标题化,因此您可以在 titleize 之前调用 downcase 并按照您的预期获得“顾问”,而 VI 本身仍然按照您的意愿结束所有大写。
标签: ruby-on-rails ruby ruby-on-rails-4 activesupport