将 var^power 替换为 pow(var,power)
Replace var^power with pow(var,power)
我正在用Java编写一个数学应用程序,该应用程序使用Javascript进行脚本编写/输入。我希望能够输入,比如说,x^2
,并在发送到JavaScript解析器之前让Java用pow(x,2)
替换它。 如何进行此类更换? 一个代码段中可能有多个不同的此类表达式,可能是一行或多行。
您应该分叉 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问题:Javascript中算术表达式的安全计算
更新:
我不确定你期望的复杂程度,但如果你想让它能够处理一些棘手的表达式,你不妨使用解析器库。
假设您正在谈论 javascript 并且正在替换字符串输入,请执行以下操作。
"x^2".replace(/(.*)'^('d+)/, "pow($1, $2)")
试试这个: 更新:在某些情况下可能是
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
相关文章:
- 控制台返回var不是't定义,但它是
- 从var向代码隐藏函数传递值
- 如何通过引用var Using DataTables来进行分页或排序
- jQuery语法添加了var
- 如何将具有文本类型值的var放入jQuery函数中
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 当var==0时,我如何显示一个警报
- javascript中对象构造函数中的var属性与this.properties
- 函数中this和var之间的区别
- JavaScript-的含义:var DndUpload=函数(inputElem){};
- Understanding Javascript scope with "var that = this&qu
- 如何使用javascript var引用Mongo DB集合's字段
- var w = q||问2;这个表达式是什么意思
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- 在jquery函数内部设置来自jquery函数的var;t运行
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 如何使用var名称调用JSON数据
- '这'在使用之前分配给了一个var
- 更改json/javascript对象var名称或从数字var中检索值
- 将 var^power 替换为 pow(var,power)