给出一个字符串 "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!("","")
只是为了踢:在这里您甚至需要一个正则表达式吗?String#tr应该可以解决问题:
telemachus ~ $ irb
>> "500 500 12".tr(' ', '')
=> "50050012"
>> "500 500 12".tr!(' ', '')
=> "50050012"
Run Code Online (Sandbox Code Playgroud)
与gsub和一样gsub!,该!方法进行更改而不是返回更改的结果。我不知道你想在这里。
在这种情况下,tr对我来说似乎更直接。我不是在寻找最佳的,但它是很好的记住,有很多的字符串方法等比正则表达式。