标题化没有下跪

时间:2015-04-14 00:26:59

标签: ruby ruby-on-rails-4

使用Ruby 2.1.3和Rails 4.1.6。 我一直在使用.titleize来清理一些用户输入,例如

'new york'.titleize
 => "New York" 

但是,如果不需要,标题化也可以通过下移来打破正确的用户输入:

'New York, NY'.titleize
 => "New York, Ny"

是否有一种干净的方式来标题化而没有任何下降?

2 个答案:

答案 0 :(得分:2)

如果您希望混合大小写的单词,并希望将它们混合起来,我会这样:

def titleize_without_downcasing(string)
  string.gsub(/(\w|')(\w*)/) { $1.upcase + $2 }
end

titleize_without_downcasing('new york, NY, UsA')
#=> 'New York, NY, UsA'

titleize_without_downcasing("doctor's")
#=> "Doctor's"

答案 1 :(得分:0)

def titlize(str)
  r = str.split.map { |word| word.size > 2 ? word.titleize : word.capitalize }
  r.join(" ")
end