如何正确格式化'mccdougal'等字符串到'McDougal'

rob*_*rob 5 ruby string ruby-on-rails

什么Ruby或Rails的DSL将格式的字符串"mccdougal""McDougal",并在同一时间离开的字符串"McDougal"作为是什么?

传递titleize"McDougal"以下结果:

"McDougal".titleize # => "Mc Dougal"
Run Code Online (Sandbox Code Playgroud)

Jos*_*den 5

据我所知,没有一个可以处理这种情况的Rails助手.这是一个非标准的边缘情况,需要特殊处理.但是,您可以创建自定义字符串变形.你可以在初始化器中删除这段代码:

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.human /mcdougal/, 'McDougal'
end
Run Code Online (Sandbox Code Playgroud)

然后当你打电话时"mcdougal".humanize,你会得到"McDougal"


unf*_*res 4

你不会找到能正确格式化这样的名称的东西。原因是因为McDougal中的M和D大写的原因是一个任意的区域性的东西。我能想到做类似事情的唯一方法是使用查找表。我想说,以编程方式获得的最好结果是"mcdougal".capitalize=>“Mcdougal”。我认为你不能也不应该猜测区域大小写。

然而,如果您正在为爱尔兰人制作一个应用程序,那么它绝对需要完成。我会制作一个查找表来解决这个问题。这很乏味,但你会发现有限数量的案例。