问题描述
|
我想大写每个单词的第一个字符,其余部分保持不变(因此与Rails的
titleize
不同,后者将其余部分小写)。第一行是测试,第三行有效,但是我想知道为什么第二行不起作用?
ruby-1.9.2-p180 :026 > \"omega-3 (dHA)\".gsub(/\\b([a-z])/,\'#\\0#\')
=> \"#o#mega-3 (#d#HA)\"
ruby-1.9.2-p180 :027 > \"omega-3 (dHA)\".gsub(/\\b([a-z])/,\'\\0\'.upcase)
=> \"omega-3 (dHA)\"
ruby-1.9.2-p180 :028 > \"omega-3 (dHA)\".gsub(/\\b([a-z])/) {|s| s.upcase}
=> \"Omega-3 (DHA)\"
解决方法
\'\\0\'.upcase
调用字符串\'\\0\'
的upcase
方法-调用括号在Ruby中是可选的。当然哪一个都不起作用,所以第二行只是.gsub(/.../,\'\\0\')