我正在用JavaScript編寫腳本/輸入的Java數學應用程序。 我希望能夠輸入,比如說,x^2
,並在發送到JavaScript解析器之前用Java將其替換爲pow(x,2)
。我該如何做這種類型的替換?一個代碼片段中可能有多個不同的表達式,這可能是一行或多行。用pow替換var^power(var,power)
0
A
回答
0
UPDATE:
我不知道你是多麼的複雜性預期,但如果你希望它能夠處理一些棘手的表情,你還不如用解析庫。
假設您正在討論javascript,並且您正在替換字符串輸入,請執行以下操作。
"x^2".replace(/(.*)\^(\d+)/, "pow($1, $2)")
0
試試這個: 更新:有可能某些情況下
var re = /(?![\+\-\*\/\(\)\^\s])([a-zA-Z0-9]+)\^([a-zA-Z0-9]+)/gm;
var str = 'w*x^2 +5^9';
var subst = 'pow($1,$2)';
var result = str.replace(re, subst);
,更好的爲數學運算參考。 http://mathjs.org/
例如&輸出
// expressions
math.eval('1.2 * (2 + 4.5)'); // 7.8
math.eval('5.08 cm to inch'); // 2 inch
math.eval('sin(45 deg)^2'); // 0.5
math.eval('9/3 + 2i'); // 3 + 2i
math.eval('det([-1, 2; 3, 1])'); // -7
3
你應該用叉子叉esprima JS解析器以適當的優先級添加^
操作人員等,然後走了解析樹,發現它被使用,並做詞彙代換。此鏈接可能有用:http://ariya.ofilabs.com/2011/08/math-evaluator-in-javascript-part-2.html。不太清楚你將如何從你的Java程序中調用這個函數,但我相信你能弄清楚。
或者,http://mathjs.org/中的解析器顯然已經支持^
,所以你可以使用它。或者,有http://silentmatt.com/javascript-expression-evaluator/也似乎支持^
。或http://jsep.from.so/,「一個微小的JavaScript表達式分析器」。
相關SO問題:Safe evaluation of arithmetic expressions in Javascript
相關問題
- 1. 替換使用var
- 2. 用a * pow(b,N)替換a * b ** N
- 3. 用var替換var中的數字
- 4. minizinc中的power-of(pow)約束
- 5. JQuery替換var值
- 6. 使用POW(2)VAR錯誤,轉換成可讀代碼
- 7. 在php中替換word var
- 8. 用var代碼替換對象
- 9. 用var替換另一個數字
- 10. VS2008 - 用推斷的類型替換var
- 11. js使用對象文字var替換
- 12. 在var中用jQuery替換字符串
- 13. Power BI-用另一個值替換空白
- 14. 在Power Builder嘗試用〜符號替換轉義符
- 15. 使用Power Query中的最後一個已知值替換null
- 16. java的正則表達式:替換$ {VAR}
- 17. PHP preg_repalce將%var%替換爲文本
- 18. 替換的所有出現{{VAR}}重視
- 19. 可以讓JavaScript替換var嗎?
- 20. JS從var替換id中的id
- 21. 在String var中替換雙引號?
- 22. 我想替換我的page.php?var =#with/page /#
- 23. Var未被更改與jQuery替換
- 24. PHP,替換url查詢var的值
- 25. java的正則表達式來替換{VAR} PX與{VAR}次{VAR} PX
- 26. 批處理腳本幫助 - 用另一個DelayedExpansion Var替換DelayedExpansion Var的子串
- 27. 使用JavaScript獲取data-attr並用var替換該屬性
- 28. pow(-0.857487,1.5)返回NaN - 替代品?
- 29. Pow在窗戶上的替代品?
- 30. 代替非常慢的pow()函數
Java和JavaScript是不同的語言,幾乎沒有共同之處,除了一些語法他們都從C繼承,不要混淆。 – cdhowie 2014-11-22 05:54:39
@cdhowie我不是。我的Java應用程序使用JavaScript解析器('javax.script.ScriptEngine')來評估JavaScript中輸入的表達式。 – 2014-11-22 05:57:59
我明白了。那麼,最終唯一的方法就是編寫一個能夠識別你的額外運算符的JavaScript解析器。任何小於這個數字的事情都會引起警告,因爲替代品並沒有做正確的事情。例如,如果'x^2'出現在字符串文字中,則不想替換它。 – cdhowie 2014-11-22 05:59:00