如何获得数字之间的特定点

时间:2018-12-31 10:28:06

标签: ruby regex

我只想删除数字之间的点

我有文字"dolar. 2.000.000"

我尝试使用\\.\d*?,但也删除了.的美元币

我希望它显示为"dolar. 2000000"

2 个答案:

答案 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。由于哈希没有所有匹配项都将返回的键。