代码之家  ›  专栏  ›  技术社区  ›  Bergrebell

将纯Ruby中的camelcase转换为dash case(hypens)

  •  0
  • Bergrebell  · 技术社区  · 7 年前

    相反的方向有很多帖子。

    但是我如何转换 camelCase 到 camel-case 红宝石?我的Regex游戏很低…这里是另一条路:

    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 回复  |  直到 7 年前
        1
  •  2
  •   Amadan    7 年前

    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"
    
        2
  •  -1
  •   Bergrebell    7 年前

    这里是:

    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
    

    毕竟没那么复杂…