【问题标题】:simple regex -- replace underscore with a space简单的正则表达式——用空格替换下划线
【发布时间】:2009-08-28 23:43:29
【问题描述】:

嘿,我正在编写我的第一个 Rails 应用程序,我正在尝试用空格替换传入 id 名称的下划线,如下所示:

之前:test_string

之后:测试字符串

我该怎么做?对不起,如果这是一个有点愚蠢的问题,我对正则表达式不是很熟悉......

【问题讨论】:

    标签: ruby-on-rails ruby regex string


    【解决方案1】:
    str.gsub!(/_/, ' ')
    

    gsub 代表“全局替换”,感叹号表示它将更改字符串本身,而不仅仅是返回替换的字符串。

    您也可以使用String#tr! 不使用正则表达式:

    str.tr!('_', ' ')
    

    【讨论】:

    • 如果str 不包含任何_str.tr!('_', ' ') 将返回 nil
    【解决方案2】:

    在 Rails 上,您可以使用更简单的 .humanize 和 ruby​​ 的 .downcase 方法,但要小心,因为它还会删除任何最终的 '_id' 字符串(在大多数情况下,这正是您需要的,甚至是大写的第一个字母)

    'text_string_id'.humanize.downcase
     => "text string" 
    

    【讨论】:

    • 另外,'text_string_id'.humanize(capitalize: false) 将允许您跳过额外的 downcase 转换。
    【解决方案3】:

    哎呀,我真的让它工作了——只是忘了更新变量名:P

    我正在使用这个:

    @id = params[:id]
    @title = @id.gsub("_", " ")
    

    【讨论】:

      【解决方案4】:

      在 rails 中使用 split 和 join

      "test_string".split('_').join(' ')

      【讨论】:

      • 不仅在 Rails 中。 split() 和 join() 是标准的 ruby​​ 方法。
      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 2016-02-26
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      相关资源
      最近更新 更多