如何避免在ruby/rails中缩写缩写词

git*_*itb 2 ruby ruby-on-rails

我有一个包含"IT专业人员"或"数据库管理员"等标题的字段.我想在句子的中间显示这个,所以需要小写.不幸的是,这也缩减了缩写词,我最终得到了"感谢加入其专业人士社区".

一个好的开始将是下面的Grantovich提到的解决方案,即指定我的首字母缩略词config/initializers/inflections.rb:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym "IT"
  inflect.acronym "DB"
end
Run Code Online (Sandbox Code Playgroud)

走这条路的问题在于,首先,我不希望将它们存储为小写,因为它们是标题,应该与大写字母一起存储.其次,它们已经以大写形式定义,突然使它们成为小写是一个坏主意.

找到解决方案:由于我希望标题出现在句子的中间,因此需要小写,我通过下标题,构造句子然后在其上调用#humanize来解决它.人性化将使句子的第一个字母和任何定义的首字母缩略词大写.

Ale*_*hey 5

如果我们假设通过首字母缩略词,你的意思是你的字符串中的任何单词由一行中的2个或更多大写字母组成,那么你可以这样做:

def smart_case(field)
  field.to_s.split(' ').map { |word|
    /[A-Z][A-Z]+/.match(word) ? word : word.downcase
  }.join(' ')
end
Run Code Online (Sandbox Code Playgroud)


Dig*_*ora 5

如果可能的话,我会将字符串存储为"IT专业人员","数据库管理员"等,所有字母除了已缩小的首字母缩略词外.然后,您可以将您的首字母缩略词添加到变形器,#titleize在需要时用于转换为标题案例.在边缘情况和代码维护负担方面,这是一个比编写自己的代码来做"选择性下行"更好的解决方案.