6*x + 7 = 7*x + 2 - 3*x
当我们将右侧移动到等式的左边时,我们需要将操作符从+转到 - 反之亦然。
使用java正则表达式replaceAll
,我们可以用-s替换所有+'。结果,所有的操作员标志变成了 - 使我们无法恢复所有的+。
作为一种解决方法,我在迭代字符串并将+更改为 - 遇到一个,反之亦然。但我仍然想知道是否有办法在Java中使用正则表达式在布尔值对之间进行切换?
答案 0 :(得分:10)
你可以使用这个技巧:
String equation = "<Your equation>"
equation = equation.replaceAll("+","$$$");
equation = equation.replaceAll("-","+");
equation = equation.replaceAll("$$$","-");
假设$$$不在您的等式中。
答案 1 :(得分:0)
在PHP中,可以执行以下操作:
function swap($m) {
return ($m[0]=='-')?'+':'-';
}
echo preg_replace_callback( '(\+|\-)', 'swap', '1 + 2 - 3 + 4 - 5');