In Schienen:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
ohne Schienen:
"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
ohne Rails (Laden Sie den ActiveSupport von Rails, um die # titleleize-Methode zu patchen String
)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
(einige) String-Anwendungsfälle, die von #titleize behandelt werden
- "Kirk Douglas"
- "kirk_douglas"
- "Kirk-Douglas"
- "kirkDouglas"
- "KirkDouglas"
#titleize Fallstricke
Rails titleize
konvertiert Dinge wie Bindestriche und Unterstriche in Leerzeichen und kann zu anderen unerwarteten Ergebnissen führen, insbesondere in Situationen, in denen zwischen Groß- und Kleinschreibung unterschieden wird, wie von @JamesMcMahon hervorgehoben:
"hEy lOok".titleize #=> "H Ey Lo Ok"
weil es dazu gedacht ist, Code in Kamelhülle wie folgt zu handhaben:
"kirkDouglas".titleize #=> "Kirk Douglas"
Um diesen #downcase
Randfall zu lösen, können Sie Ihren String zuerst bereinigen, bevor Sie #titleize ausführen. Wenn Sie dies tun, werden Sie natürlich alle camelCased-Worttrennungen auslöschen:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
split
wird standardmäßig auf Speicherplatz aufgeteilt, so dass Sie es noch kürzer machen können:'one TWO three foUR'.split.map(&:capitalize).join(' ')