这看起来很简单,但我遗漏了一些东西。
我有大量来自各种来源和不同格式的输入。
数字输入
123
123.45
123,45 (note the comma used here to denote decimals)
1,234
1,234.56
12,345.67
12,345,67 (note the comma used here to denote decimals)
关于输入的附加信息
- 数字永远小于 100 万
- 编辑:这些是价格,因此要么是整数,要么是百分之一
我正在尝试编写一个正则表达式并使用 gsub 去除千位逗号。我该怎么做?
我写了一个正则表达式:myregex =/\d+(,)\d{3}/
当我在 Rubular 中测试它时,它表明它只在我想要的测试用例中捕获逗号。
但是当我运行 gsub 时,我得到一个空字符串:inputstr.gsub(myregex,"")
看起来 gsub 正在捕获所有内容,而不仅仅是 () 中的逗号。我哪里错了?
最佳答案
result = inputstr.gsub(/,(?=\d{3}\b)/, '')
仅当紧跟三个数字时才删除逗号。
(?=...)
是一个先行断言:它需要有可能在当前位置匹配,但它不会成为实际匹配的文本的一部分(以及随后替换)。
关于 ruby (在 Rails 上)正则表达式 : removing thousands comma from numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14613980/