В Rails:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
без рельсов:
"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
без Rails (загрузите ActiveSupport от rails для исправления метода #titleize String
)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
(некоторые) варианты использования строки, обработанные #titleize
- "Кирк Дуглас"
- "kirk_douglas"
- "Kirk-Дуглас"
- «» Кирк Дуглас
- «» Кирк Дуглас
#titleize gotchas
Rails titleize
преобразует такие вещи, как тире и подчеркивание, в пробелы и может давать другие неожиданные результаты, особенно в ситуациях с учетом регистра, как указано @JamesMcMahon:
"hEy lOok".titleize #=> "H Ey Lo Ok"
потому что он предназначен для обработки кода на верблюде, например:
"kirkDouglas".titleize #=> "Kirk Douglas"
Чтобы справиться с этим #downcase
крайним случаем, вы можете сначала очистить строку перед запуском #titleize. Конечно, если вы сделаете это, вы уничтожите все разделенные верблюдами слова:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
split
по умолчанию разделится на пробел, поэтому вы можете сделать его еще короче:'one TWO three foUR'.split.map(&:capitalize).join(' ')