我要做的是将$ sign后面的数字更改为字符串中的0。我可以做简单的“找到$符号,然后将其后的东西更改为0”,但问题是该数字可能有不同的位数。另一个问题是数字可能是非整数,如“2.5”,所以它必须容忍逗号,或负数如“-2” 例如:
我有一个字符串类型的等式:geoQuery40.on("key_entered", function(key) {
// v-- Here's the change
restaurantsRef40.child(key).once("value", function(snapshot42) {
...
我写如下:x^(-2) + 4x + 123 + 42.2 + 1
我想要的输出应该是:x^($-2) + $4x + $123 + $42.2 + 1
你知道怎么做吗?
现在我提出了想法,但我不知道ruby中是否存在这样的方法。
x^(0) + 0x + 0 + 1
在循环中,可能有一个函数可以修剪每个数字,直到它找到非数字字符(除了起始 - 和。模仿负点或浮点数)然后放入那个地方“0”。
答案 0 :(得分:2)
r = /
\$ # match '$'
(?: # begin a non-capture group
-(?>\d) # match a hyphen followed by a digit in a positive lookahead
| # or
[\d,.]+ # match one of the characters one or more times
) # end the non-capture group
/x # free-spacing regex definition mode
通常按如下方式编写。
r = /\$(?:-(?>\d)|[\d,.]+)/
"x^($-2) + $4,000x + $123 + $42.2 + 1".gsub(r, '0')
#=> "x^(0) + 0x + 0 + 0 + 1"
"x^($-2) + $4x + $-123- $42.2 + 1".gsub(r, '0')
#=> "x^(0) + 0x + 023- 0 + 1"
答案 1 :(得分:1)
您可以将{regex与String#gsub
一起使用,如下所示:
"x^($-2) + $4,000x + $123 + $42.2 + 1".gsub(/\$-?\d+(\,\d+)*(\.\d+)?/,'0')
#=> "x^(0) + 0x + 0 + 0 + 1"