En rieles:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
sin rieles:
"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
sin Rails (cargue ActiveSupport de rails para parchear el método #titleize String
)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
(algunos) casos de uso de cadenas manejados por #titleize
- "Kirk Douglas"
- "kirk_douglas"
- "Kirk-Douglas"
- "kirkDouglas"
- "KirkDouglas"
#titleize gotchas
Rails titleize
convertirá cosas como guiones y guiones bajos en espacios y puede producir otros resultados inesperados, especialmente con situaciones sensibles a mayúsculas y minúsculas como lo señala @JamesMcMahon:
"hEy lOok".titleize #=> "H Ey Lo Ok"
porque está destinado a manejar código en camello como:
"kirkDouglas".titleize #=> "Kirk Douglas"
Para lidiar con este caso límite, #downcase
primero puede limpiar su cadena antes de ejecutar #titleize. Por supuesto, si haces eso, eliminarás cualquier separación de palabras en camello:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
split
se dividirá en el espacio de forma predeterminada, por lo que puede hacerlo aún más corto:'one TWO three foUR'.split.map(&:capitalize).join(' ')