В Ruby почему не работает «омега-3 (dHA)». Gsub (/ \ b ([az]) /, '\ 0'.upcase)? - PullRequest
2 голосов
/ 14 апреля 2011

Я хочу использовать заглавные буквы первого символа каждого слова и оставить остальные нетронутыми (поэтому он отличается от titleize Rails, который сокращает остальные).Первая строка - тест, а третья строка работает, но мне интересно, почему вторая строка не работает?

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)" 

1 Ответ

7 голосов
/ 14 апреля 2011

'\0'.upcase вызывает метод upcase строки '\0' - в Ruby необязательно указывать парены для вызоваЧто, конечно, ничего не делает, поэтому вторая строка просто .gsub(/.../, '\0')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...