【问题标题】:How do I convert a sequence of words into an attribute? [duplicate]如何将单词序列转换为属性? [复制]
【发布时间】:2013-08-31 13:27:31
【问题描述】:

我需要转身:

"First Name".some_method = "first_name"

我想我可以只使用正则表达式,但想知道是否有更好的方法。我尝试了constantizehumanize,这与我需要完成的几乎相反:

"first_name".humanize = "First name"

【问题讨论】:

    标签: ruby-on-rails ruby string inflector


    【解决方案1】:
    "First Name".gsub(/\s+/, '_').downcase
    # => "first_name" 
    

    【讨论】:

    • 为什么投反对票?似乎有人对所有答案都投了反对票。
    • 我没有投反对票,但他正在寻找没有正则表达式的解决方案,而您使用正则表达式提供答案。也许这就是投反对票的原因。
    【解决方案2】:
    "First Name".parameterize.underscore # => first_name
    

    【讨论】:

      【解决方案3】:
      require 'active_support/core_ext'
      
      "First Name".gsub(/\s/, '').underscore # => "first_name"
      

      不过,我找不到单一方法。

      【讨论】:

        【解决方案4】:
          irb(main):017:0> "First Name".downcase.gsub(' ', '_')
          => "first_name"
        

        【讨论】:

        • 为什么要投反对票? ..谁投反对票?
        【解决方案5】:

        然后使用String#tr如下:

        "First Name".tr(" ", '_').downcase
        # => "first_name"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-23
          • 1970-01-01
          • 2023-03-11
          • 2019-12-02
          • 2019-04-21
          • 2016-02-02
          • 2014-02-16
          • 1970-01-01
          相关资源
          最近更新 更多