简单的正则表达式 - 用空格替换下划线

mpo*_*z08 23 ruby regex string ruby-on-rails

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

之前:test_string

之后:测试字符串

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

Jer*_*ten 34

str.gsub!(/_/, ' ')
Run Code Online (Sandbox Code Playgroud)

gsub 代表'全局替换',感叹号意味着它将改变字符串本身而不是仅返回替换字符串.

你也可以在没有正则表达式的情况下使用String#tr!:

str.tr!('_', ' ')
Run Code Online (Sandbox Code Playgroud)

  • 如果`str`不包含任何`_`,`str.tr!('_','')`将返回nil (11认同)

And*_*ión 27

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

'text_string_id'.humanize.downcase
 => "text string" 
Run Code Online (Sandbox Code Playgroud)

  • 或者,`'text_string_id'.humanize(capitalize: false)` 将允许你跳过额外的 `downcase` 转换。 (2认同)

mpo*_*z08 9

哎呀,我实际上有它工作 - 只是忘了更新变量名称:P

我在用这个:

@id = params[:id]
@title = @id.gsub("_", " ")
Run Code Online (Sandbox Code Playgroud)