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

标签 ruby regex

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

关于ruby - 在 Ruby 中,为什么 "omega-3 (dHA)".gsub(/\b([a-z])/, '\0' .upcase) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655336/

相关文章:

ruby-on-rails - 为什么 Rake 任务中的这个 Ruby 脚本不能选择 Rails 环境?

mysql - 更新 MySQL 中的字段以删除空白行

regex - 为什么这个正则表达式允许插入符号?

regex - MATLAB 2012 正则表达式

mysql - ROR 中的数据库安全并发

ruby - 网络聊天程序!! (需要一点帮助)

java - 从 URL 中提取 Android 应用 ID

c# - 从字符串行解析 GUID

ruby-on-rails - 无法访问 Rails 中的 ENV 变量

ruby - 如何从 JSON 解析自定义 Ruby 结构