在javascript中解析一个数字比较字符串
parsing a number comparison string in javascript
所以我想知道是否有一个简单的方法,我猜,解析包含数字比较的字符串。
例如,我有一个包含如下字符串的变量str = "1>3";
现在我使用math插件来使用math.eval(str),它返回一个布尔值,但我觉得这是一个非常大的资源,只是为了一个简单的比较。
我的脚本目前是这样的,我喜欢它的简单性,我只是讨厌使用这么大的资源。
if (math.eval(str) == true) {
//do something
} else {
// do something else
}
对于这件事的任何意见都将非常感谢。
如果您需要友好的环境(非公共的,没有安全考虑),您可以使用常规的eval
来计算结果:
var result = eval("1>3");
请注意,eval
允许您运行任何代码,如果您让用户输入"条件",并计划将其用于本地机器上的个人计算器样本之外的任何东西-使用适当的解析器验证表达式,而不是使用任意函数。
如果您有这样的简单表达式,如
expression := number comparison_operator number
comparison_operator := < | > | = | ..
那么为它编写解析器也很简单。
。沿着操作符
分割输入字符串"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
}
这个库为表达式解析做了很多开箱即用的事情。
相关文章:
- 递增一个数字而不去掉前导零
- 制作一个regex来验证只有一个数字的字符串
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 有没有办法在里面看到一个数字'的64位浮点IEEE754表示
- 我如何解析二's是一个数字的补码字符串
- 为什么我需要在这里输入var,为什么它会给我一个数字作为答案?(Javascript)
- 为什么 JavaScript 如果一个数字有一个前导零,就将其视为八进制
- 增加一个数字并将其附加到函数
- 如何让计算机猜测一个数字并返回猜测次数(Javascript)
- 正则表达式删除最后一个数字之后的字符串
- 用户在文本框中输入一个数字,并根据使用 PHP 输入的数字重定向到另一个网页
- 每次使用 Javascript 加载页面时增加一个数字(变量)的简单方法
- Javascript Regexp :如果一个字母与一个数字相邻,请添加下划线
- jQuery UI Slider ui.value 获取最后一个数字
- JavaScript 使用多少位来表示一个数字
- Javascript提示和警报输入一个数字,它将循环,您将输入数字以获得它的平均值
- RXJS 为什么只有最后一个数字同时有 a 和 b
- 检查字符串是否等于一个单词和一个数字
- 对负指数调用的.toFixed()返回一个数字,而不是字符串
- 脚本每天添加相同的数字,月底再添加一个数字