在纯红宝石中将camelCase转换为破折号(连字符)

时间:2018-11-15 09:31:04

标签: ruby regex

关于相反方法的文章很多。

但是如何将红宝石中的camelCase转换为camel-case?我的正则表达式游戏非常低...反过来就是这样:

def underscore(string)
  string.gsub(/::/, '/').
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr("-", "_").
  downcase
end

2 个答案:

答案 0 :(得分:2)

ActiveRecord已经拥有它:

gem install i18n activesupport-inflector

然后

require 'active_support/inflector'
"myHTMLComponent".underscore.dasherize
# => "my-html-component"

您可以看到实现here(带有acronym_underscore_regex here)。

如果您不想担心首字母缩略词之类的极端情况,就足够了:

"myCamelCase".gsub(/[[:upper:]]/) { "-#{$&.downcase}" }
# => "my-camel-case"

答案 1 :(得分:-1)

在这里:

def to_dash_case(string)
  string.gsub(/::/, '/').
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1-\2').
  gsub(/([a-z\d])([A-Z])/,'\1-\2').
  downcase
end

毕竟不是那么复杂...