6
6*x + 7 = 7*x + 2 - 3*x

当我们将等式的右侧移动到左侧时,我们需要将运算符符号从 + 翻转到 - ,反之亦然。

使用 java regex replaceAll,我们可以将所有 + 替换为 -。结果,所有的操作符都变成了 -'s,使得我们无法恢复所有的 +'s。

作为一种解决方法,我遍历字符串并在遇到一个时将 + 更改为 - ,反之亦然。但我仍然想知道是否有办法在 Java 中使用正则表达式在布尔值对之间翻转?

4

2 回答 2

10

你可以使用这个技巧:

String equation = "<Your equation>"
equation = equation.replaceAll("+","$$$");
equation = equation.replaceAll("-","+");
equation = equation.replaceAll("$$$","-");

假设 $$$ 不在您的等式中。

于 2012-12-03T09:46:10.733 回答
0

在 PHP 中,可以执行以下操作:

function swap($m) {
    return ($m[0]=='-')?'+':'-';
}
echo preg_replace_callback( '(\+|\-)', 'swap', '1 + 2 - 3 + 4 - 5');
于 2012-12-03T10:19:17.940 回答