我在javascript中有以下表达式(字符串):
var my_expr = "(2*(A||B&&C))&&(3*D)";
如何做到这样的事情:
(2*A||2*B&&2*C)&&(3*D)
感谢您的帮助。
答案 0 :(得分:0)
您必须将表达式解析为抽象表达式树。这不是最简单的任务,但也不是不可能的。接下来,您必须实现一些代数属性,尤其是distributive property,您将在此处展示。最后,您必须表达要应用于表达式的哪个子树的规则。
一旦你为一般情况完成了所有这些工作,将会将其应用于此以及您可能遇到的所有类似案例。
Primer on expression trees in Javascript
编辑:您必须通过表达式树,没有捷径,因为它是代数属性可以正确应用于所有情况的唯一方法
答案 1 :(得分:0)
听起来你想要eval()
字符串:
> var str = "4*5";
> eval(str);
20
互联网上有无数资源,说明为什么eval
是一个危险的东西。如果您从其他来源获取字符串,则尤其如此。如果有任何替代方案,我建议使用它们。