给定字符串"5 900 000"我想使用gsub和下面的模式去掉空格:
"5 900 000"
gsub
gsub(/\s/, '')
但这似乎不起作用,也不起作用
gsub(' ', '')
3wabscal1#
如果要进行原位更换,则需要用途:
str.gsub!(/\s/,'')
或者,gsub返回带有替换的字符串
str2 = str.gsub(/\s/,'')
EDIT:根据您的回答,字符串中似乎嵌入了一些不可打印的字符,而不是空格。使用/\D/作为搜索字符串可能是您想要的。以下代码将匹配任何非数字字符,并将其替换为空字符串。
str.gsub!(/\D/,'')
型
a7qyws3x2#
>> "5 900 00".gsub(' ','') => "590000"
这真的是一根绳子吗?.gsub返回值,如果要更改变量,请尝试.gsub!(““,“”)
cnwbcb6i3#
根据具体情况,您可能不需要正则表达式。如果要将单个空格替换为空字符串,String#tr应该可以很好地工作:
String#tr
telemachus ~ $ irb >> "500 500 12".tr(' ', '') => "50050012" >> "500 500 12".tr!(' ', '') => "50050012"
与gsub和gsub!一样,!方法在适当的位置进行更改,而不是返回更改后的结果,我不知道您在这里想要哪一个。在这种情况下,tr对我来说似乎更简单,我不是在寻找优化,但记住除了正则表达式之外还有很多字符串方法是很好的。
gsub!
!
tr
eaf3rand4#
出于效率原因,我建议使用str.gsub!(/\s+/, '')。
str.gsub!(/\s+/, '')
osh3o9ms5#
试试这个,希望能有所帮助:
2.2.1 :001> str= " Jai Kumar rajput "; # " Jai Kumar rajput " 2.2.1 :001> str.squish.downcase.tr(" ",""); # "JaiKumarRajput"
4dbbbstv6#
"5 900 000".gsub(/\s/,'')工作正常从我看到的你写的gsub点(foo,bar),它必须是字符串。gsub(foo,bar)
"5 900 000".gsub(/\s/,'')
cbwuti447#
print "5 900 000".gsub(/\s/, '')
对我有用。您是否影响了变量的结果?
yrdbyhpb8#
你是说
str.gsub!.(/\s/,'')
带感叹号的
ttp71kqs9#
有趣的是当我打印字符串时697\302\240000但进入数据库的是:697000.我知道我给出的模式应该和你的建议一样有效,但这似乎有点“狡猾”:-)
9条答案
按热度按时间3wabscal1#
如果要进行原位更换,则需要用途:
或者,gsub返回带有替换的字符串
EDIT:根据您的回答,字符串中似乎嵌入了一些不可打印的字符,而不是空格。使用/\D/作为搜索字符串可能是您想要的。以下代码将匹配任何非数字字符,并将其替换为空字符串。
型
a7qyws3x2#
这真的是一根绳子吗?
.gsub返回值,如果要更改变量,请尝试.gsub!(““,“”)
cnwbcb6i3#
根据具体情况,您可能不需要正则表达式。如果要将单个空格替换为空字符串,
String#tr
应该可以很好地工作:与
gsub
和gsub!
一样,!
方法在适当的位置进行更改,而不是返回更改后的结果,我不知道您在这里想要哪一个。在这种情况下,
tr
对我来说似乎更简单,我不是在寻找优化,但记住除了正则表达式之外还有很多字符串方法是很好的。eaf3rand4#
出于效率原因,我建议使用
str.gsub!(/\s+/, '')
。osh3o9ms5#
试试这个,希望能有所帮助:
4dbbbstv6#
"5 900 000".gsub(/\s/,'')
工作正常从我看到的你写的gsub点(foo,bar),它必须是字符串。gsub(foo,bar)
cbwuti447#
对我有用。
您是否影响了变量的结果?
yrdbyhpb8#
你是说
带感叹号的
ttp71kqs9#
有趣的是当我打印字符串时
697\302\240000
但进入数据库的是:697000.我知道我给出的模式应该和你的建议一样有效,但这似乎有点“狡猾”:-)