Мне нравится двухстрочный текст Грега (сначала заголовок, а затем регулярное выражение в нижнем регистре выделенных слов.) FWIW, вот функция, которую я использую в своих проектах.Хорошо проверено, хотя гораздо более многословно.Вы заметите, что я перезаписываю titleize в ActiveSupport:
class String
#
# A better titleize that creates a usable
# title according to English grammar rules.
#
def titleize
count = 0
result = []
for w in self.downcase.split
count += 1
if count == 1
# Always capitalize the first word.
result << w.capitalize
else
unless ['a','an','and','by','for','in','is','of','not','on','or','over','the','to','under'].include? w
result << w.capitalize
else
result << w
end
end
end
return result.join(' ')
end
end