Rails titleize方法删除连字符,而大写方法不会将连字符后的单词大写。我想要跟随(通过编写方法):
"mary-joe spencer-moore" => "Mary-Joe Spencer-Moore"
"mary-louise o'donnell" => "Mary-Louise O'Donnell"
答案 0 :(得分:16)
Check Titelize implementation,你可以得到:
"mary-joe spencer-moore".humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
会给你=> “Mary-Joe Spencer-Moore”
你可以在字符串类中编写一个函数,添加到intalizers:
class String
def my_titleize
humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
end
end
然后从您的代码:
"mary-joe spencer-moore".my_titleize
答案 1 :(得分:7)
您还可以通过拆分字符串并分别标题化部分来获得所需的结果:
"mary-louise o'donnell".split('-').map(&:titleize).join('-')
答案 2 :(得分:0)
%q%mary-louise o'donnell%.gsub(/\b([a-z])/) { $1.capitalize }
=> "Mary-Louise O'Donnell"
但是,如果您输入的字母大写不正确(例如“ MARY-LOUISE O'DONNELL”),则首先需要.downcase
;此外,如果您的姓氏和名字可能有nil
个值,然后又将它们加入,那么您将需要.strip
:
[first_name, last_name].join(' ').downcase.gsub(/\b([a-z])/) { $1.capitalize }.strip