ruby 删除/替换字符串中的空格

4nkexdtk  于 2022-12-18  发布在  Ruby
关注(0)|答案(9)|浏览(201)

给定字符串"5 900 000"
我想使用gsub和下面的模式去掉空格:

gsub(/\s/, '')

但这似乎不起作用,也不起作用

gsub(' ', '')
3wabscal

3wabscal1#

如果要进行原位更换,则需要用途:

str.gsub!(/\s/,'')

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

str2 = str.gsub(/\s/,'')

EDIT:根据您的回答,字符串中似乎嵌入了一些不可打印的字符,而不是空格。使用/\D/作为搜索字符串可能是您想要的。以下代码将匹配任何非数字字符,并将其替换为空字符串。

str.gsub!(/\D/,'')

a7qyws3x

a7qyws3x2#

>> "5 900 00".gsub(' ','')
=> "590000"

这真的是一根绳子吗?
.gsub返回值,如果要更改变量,请尝试.gsub!(““,“”)

cnwbcb6i

cnwbcb6i3#

根据具体情况,您可能不需要正则表达式。如果要将单个空格替换为空字符串,String#tr应该可以很好地工作:

telemachus ~ $ irb
>> "500 500 12".tr(' ', '')
=> "50050012"
>> "500 500 12".tr!(' ', '')
=> "50050012"

gsubgsub!一样,!方法在适当的位置进行更改,而不是返回更改后的结果,我不知道您在这里想要哪一个。
在这种情况下,tr对我来说似乎更简单,我不是在寻找优化,但记住除了正则表达式之外还有很多字符串方法是很好的。

eaf3rand

eaf3rand4#

出于效率原因,我建议使用str.gsub!(/\s+/, '')

osh3o9ms

osh3o9ms5#

试试这个,希望能有所帮助:

2.2.1 :001> str= "  Jai   Kumar rajput ";
  # "  Jai   Kumar rajput "
2.2.1 :001> str.squish.downcase.tr(" ","");
  # "JaiKumarRajput"
4dbbbstv

4dbbbstv6#

"5 900 000".gsub(/\s/,'')工作正常
从我看到的你写的gsub(foo,bar),它必须是字符串。gsub(foo,bar)

cbwuti44

cbwuti447#

print "5 900 000".gsub(/\s/, '')

对我有用。
您是否影响了变量的结果?

yrdbyhpb

yrdbyhpb8#

你是说

str.gsub!.(/\s/,'')

带感叹号的

ttp71kqs

ttp71kqs9#

有趣的是当我打印字符串时
697\302\240000
但进入数据库的是:697000.我知道我给出的模式应该和你的建议一样有效,但这似乎有点“狡猾”:-)

相关问题