不确定如何说出这一点,因此在Google搜索中没有太多运气......
我需要计算一串数字的值。
实施例。 用户在文本字段中键入“1.00 + 2.00 - 0.50”。该函数应该能够获取该字符串并计算结果以返回$ 2.50。
任何人都有办法在他们的技巧包里做到这一点吗?
答案 0 :(得分:4)
如果它实际上是一个数学运算,你可能只是使用eval,但不确定你想要的是什么:
document.write(eval("1.00 + 2.00 - 0.50"));
答案 1 :(得分:2)
Theo T的答案看起来是最直接的方式,但是如果你需要编写自己的简单解析器,你可以从splitting字符串开始,在输出中查找你的运算符。
答案 2 :(得分:0)
只是为了改善Theo的答案。
除非您完全确定要传递给该功能的内容,否则不应使用eval
。由于eval
将运行代码,因此您可以编写任何JavaScript代码并执行它。
确保只获得正确代码的方法之一是使用以下脚本:
var str = "$34.00 + $25.00 alert('some code')"; // Our string with code
var pattern = /[0-9\+\-\.\*\/]*/g; // Regex pattern
var math_operation = str.match(pattern).join(''); // Getting the operation
document.write(eval(math_operation)); // Getting the result
这不仅允许用户输入$34.00 + $5.00
之类的内容,还可以防止代码被注入。