给定字符串"5 900 000"
我希望使用gsub
以下列模式删除空格:
gsub(/\s/, '')
但这似乎不起作用。也不是:
gsub(' ', '')
答案 0 :(得分:30)
如果您想进行替换,则需要使用:
str.gsub!(/\s/,'')
或者,gsub返回带有替换
的字符串str2 = str.gsub(/\s/,'')
编辑:根据您的回答,看起来您在字符串中嵌入了一些不可打印的字符,而不是空格。使用/\D/作为搜索字符串可能就是您想要的。以下内容将匹配任何非数字字符,并将其替换为空字符串。
str.gsub!(/\D/,'')
答案 1 :(得分:10)
>> "5 900 00".gsub(' ','')
=> "590000"
它真的是一个字符串吗?
.gsub返回值,如果你想改变变量try .gsub!(“”,“”)
答案 2 :(得分:4)
只是为了踢:你甚至需要一个正则表达式吗? String#tr
应该做的很好:
telemachus ~ $ irb
>> "500 500 12".tr(' ', '')
=> "50050012"
>> "500 500 12".tr!(' ', '')
=> "50050012"
与gsub
和gsub!
一样,!
方法进行了更改,而不是返回更改的结果。我不知道你想要哪一个。
在这种情况下,tr
对我来说似乎更直截了当。我不是在寻找优化,但要记住,有很多字符串方法其他而不是正则表达式。
答案 3 :(得分:2)
出于效率原因,我建议您str.gsub!(/\s+/, '')
。
答案 4 :(得分:2)
试试这个希望这会有所帮助:
2.2.1 :001> str= " Jai Kumar rajput ";
# " Jai Kumar rajput "
2.2.1 :001> str.squish.downcase.tr(" ","");
# "JaiKumarRajput"
答案 5 :(得分:1)
"5 900 000".gsub(/\s/,'')
工作正常
从我看到你写的gsub 点(foo,bar),它必须是 string.gsub(foo,bar)
答案 6 :(得分:0)
print "5 900 000".gsub(/\s/, '')
适合我。
您是否影响变量的结果?
答案 7 :(得分:0)
str.gsub!.(/\s/,'')
带有感叹号的?
答案 8 :(得分:0)
有趣的是,当我打印字符串时,我得到
697 \ 302 \ 240000
但是到达数据库的是:697 000。 我知道我给出的模式应该和你的建议一样有效,但这似乎有点'狡猾'的情况: - )