在javascript中解析数字比较字符串

时间:2015-09-25 03:25:12

标签: javascript string parsing math eval

所以我想知道是否有一个简单的方法,我想,解析一个包含数字比较的字符串。

例如,我有一个包含这样的字符串的变量 str = "1>3";

现在我使用数学插件使用math.eval(str)返回一个布尔值,但我觉得这只是一个非常大的资源,只包含一个简单的比较。

我的剧本目前是这样的,我喜欢简单,我不喜欢使用这么大的资源。

if (math.eval(str) == true) {
    //do something
} else {
   // do something else
}

对此事的任何意见都将不胜感激。我提前谢谢你。

3 个答案:

答案 0 :(得分:2)

如果您需要友好环境(非公开,无安全注意事项),您可以使用常规eval来计算结果:

var result = eval("1>3");

请注意,eval允许您运行任何代码,如果您让用户输入“条件”并计划将其用于本地计算机上的个人计算器示例之外的任何内容 - 请使用验证表达式的正确解析器并执行此操作不使用任意函数。

答案 1 :(得分:2)

如果你有这样简单的表达,比如

 expression := number comparison_operator number
 comparison_operator := < | > | = | ..

然后为此编写解析器也非常简单。

E.g。沿运算符分割输入字符串

"1>3" -> 
op = ">" ->
split: ["1", "3"] -> 
num1_str = "1", num2_str = "3"

将每个数字从其字符串表示转换为数字值。

num1 = 1, num2 = 3

然后应用比较运算符。

switch (op) {
case "<":
  return num1 < num2;
case ">":
  return num1 > num2;
case "=":
  return num1 == num2;
// <=, >=, !=, ..
default:
  // unknown operator
}

答案 2 :(得分:0)

This lib 为表达式解析做了很多开箱即用的事情。