用下一个字母大写的

时间:2016-12-28 21:30:07

标签: ruby regex

我有一个如下符号。每当符号包含" - "连字符,我想删除它并取消随后的字母。 我可以这样做:

sym = :'new-york'
str = sym.to_s.capitalize
/-(.)/.match(str)     
str = str.gsub(/-(.)/,$1.capitalize)     
=> "NewYork"

这需要四行。是否有一种更优雅的方式来创建CamelCase(上层CamelCase,例如NewYork,NewJersey,BucksCounty)来自Ruby中的连字词?

3 个答案:

答案 0 :(得分:4)

以这种方式:

sym.to_s.split('-').map(&:capitalize).join #=> "NewYork" 

答案 1 :(得分:0)

sym.to_s.gsub(/(-|\A)./) { $&[-1].upcase }

sym.to_s.gsub(/(-|\A)./) { |m| m[-1].upcase }

答案 2 :(得分:0)

r = /
    ([[:alpha:]]+) # match 1 or more letters in capture group 1
    -              # match a hyphen
    ([[:alpha:]]+) # match 1 or more letters in capture group 2
    /x             # free-spacing regex definition mode

sym = :'new-york'
sym.to_s.sub(r) { $1.capitalize + $2.capitalize }
  #=> "NewYork"