我有一个如下符号。每当符号包含" - "连字符,我想删除它并取消随后的字母。 我可以这样做:
sym = :'new-york'
str = sym.to_s.capitalize
/-(.)/.match(str)
str = str.gsub(/-(.)/,$1.capitalize)
=> "NewYork"
这需要四行。是否有一种更优雅的方式来创建CamelCase(上层CamelCase,例如NewYork,NewJersey,BucksCounty)来自Ruby中的连字词?
答案 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"