我只想删除数字之间的点
我有文字"dolar. 2.000.000"
我尝试使用\\.\d*?
,但也删除了.
的美元币
我希望它显示为"dolar. 2000000"
。
答案 0 :(得分:4)
使用肯定的lookarounds。
"dolar. 2.000.000".gsub(/(?<=\d)\.(?=\d)/, '')
#⇒ "dolar. 2000000"
(?<=\d)
的意思是“前面没有包含在匹配数字中”,而(?=\d)
的意思是“后面没有包含在匹配数字中”。
答案 1 :(得分:1)
还有其他一些方法可以做到这一点。
str = "dolar. 2.000.000"
以下所有返回"dolar. 2000000"
。
str.gsub(/\d\.\d/) { |s| s.delete('.') }
str.gsub(/(\d)\.(\d)/, '\1\2')
h = Hash.new { |_,k| k.delete('.') } #=> {}
str.gsub(/\d\.\d/, h)
在#3中,如果哈希没有键h[k]
,则k.delete('.')
返回k
。由于哈希没有所有匹配项都将返回的键。