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

时间:2009-06-16 12:35:53

标签: ruby regex

给定字符串"5 900 000"

我希望使用gsub以下列模式删除空格:

gsub(/\s/, '')

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

gsub(' ', '')

9 个答案:

答案 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"

gsubgsub!一样,!方法进行了更改,而不是返回更改的结果。我不知道你想要哪一个。

在这种情况下,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。 我知道我给出的模式应该和你的建议一样有效,但这似乎有点'狡猾'的情况: - )