2012-12-03 35 views
6
6*x + 7 = 7*x + 2 - 3*x 

當我們將右邊移到等式左邊時,我們需要將運算符符號從+移到 - 反之亦然。是否可以在+和 - 之間切換在Java中使用正則表達式?

使用java正則表達式replaceAll,我們可以用-s替換所有的+。結果,所有的操作員標誌都變成了 - ,使我們無法恢復所有的+。

作爲一種解決方法,我遍歷字符串並將+更改爲 - 遇到一個時,反之亦然。但我仍然想知道是否有辦法在Java中使用正則表達式在布爾值對之間進行切換?

+5

你真的不應該與正則表達式的數學公式的工作。使用標記器並使用標記。 –

+1

從字符串中生成語法樹,在樹上操作,然後渲染回字符串。更少麻煩,更不容易出錯。 – Cubic

回答

10

您可以使用這一招:

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

假設$$$是不是在你的公式。

+1

使用3 replaceAll效率不高。此外,你忘了將replaceAll的結果賦給''equation'。 – Alex

+1

嘿,我給他看了個招數。我沒有說它是有效的,它只是比迭代更優雅 – giorashc

+0

此外,如果他的方程不是超大的,這個解決方案將工作得足夠快,以考慮用一些更快但更復雜的算法進行交易 – giorashc

0

在PHP中可以做到以下幾點:

function swap($m) { 
    return ($m[0]=='-')?'+':'-'; 
} 
echo preg_replace_callback('(\+|\-)', 'swap', '1 + 2 - 3 + 4 - 5'); 
+0

對於JAVA:http://stackoverflow.com/questions/375420/java-equivalent-to-phps-preg-replace-callback – TomTom

相關問題