剥离/替换字符串中的空格

Grz*_*lak 11 ruby regex

给出一个字符串 "5 900 000"

我想gsub用下面的模式去除空格:

gsub(/\s/, '')
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.也不是:

gsub(' ', '')
Run Code Online (Sandbox Code Playgroud)

tva*_*son 30

如果您想进行替换,则需要使用:

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

或者,gsub返回带有替换的字符串

str2 = str.gsub(/\s/,'')
Run Code Online (Sandbox Code Playgroud)

编辑:根据你的答案,看起来你有一些不可打印的字符嵌入字符串,而不是空格.使用/\D /作为搜索字符串可能是您想要的.以下内容将匹配任何非数字字符,并将其替换为空字符串.

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


Jon*_*röm 11

>> "5 900 00".gsub(' ','')
=> "590000"
Run Code Online (Sandbox Code Playgroud)

它真的是一个字符串吗?

.gsub返回值,如果你想改变变量try .gsub!("","")


Tel*_*hus 5

只是为了踢:在这里您甚至需要一个正则表达式吗?String#tr应该可以解决问题:

telemachus ~ $ irb
>> "500 500 12".tr(' ', '')
=> "50050012"
>> "500 500 12".tr!(' ', '')
=> "50050012"
Run Code Online (Sandbox Code Playgroud)

gsub和一样gsub!,该!方法进行更改而不是返回更改的结果。我不知道你想在这里。

在这种情况下,tr对我来说似乎更直接。我不是在寻找最佳的,但它是很好的记住,有很多的字符串方法比正则表达式。