No Rails:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
sem trilhos:
"kirk douglas".split(/ |\_/).map(&:capitalize).join(" ")
#OBJECT IT OUT
def titleize(str)
str.split(/ |\_/).map(&:capitalize).join(" ")
end
#OR MONKEY PATCH IT
class String
def titleize
self.split(/ |\_/).map(&:capitalize).join(" ")
end
end
sem Rails (carregue o ActiveSupport do Rails para corrigir o método #titleize String
)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
(alguns) casos de uso de string tratados por #titleize
- "Kirk Douglas"
- "kirk_douglas"
- "Kirk-Douglas"
- "KirkDouglas"
- "KirkDouglas"
#titleize dicas
O Rails titleize
converterá coisas como traços e sublinhados em espaços e poderá produzir outros resultados inesperados, especialmente em situações que diferenciam maiúsculas de minúsculas, como apontado por @JamesMcMahon:
"hEy lOok".titleize #=> "H Ey Lo Ok"
porque se destina a lidar com código de camelo, como:
"kirkDouglas".titleize #=> "Kirk Douglas"
Para lidar com esse caso de borda, limpe sua string #downcase
antes de executar #titleize. Obviamente, se você fizer isso, eliminará todas as separações de palavras com cameloCased:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
split
irá dividir em espaço por padrão, para que você possa torná-lo ainda mais curto:'one TWO three foUR'.split.map(&:capitalize).join(' ')