У рейках:
"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
без рейок (завантажте рейки ActiveSupport для виправлення методу #titleize String
)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
(деякі) випадки використання рядків, які обробляються #titleize
- "Кірк дуглас"
- "kirk_douglas"
- "Кірк-Дуглас"
- "kirkDouglas"
- "KirkDouglas"
#titleize gotchas
Rails's 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(' ')