在Ruby中,为什么“ omega-3dHA”gsub/ \\\\ b[a-z]/,\'\\\\ 0\'.upcase不起作用?

问题描述

| 我想大写每个单词的第一个字符,其余部分保持不变(因此与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\')