Javascript将字符串转换为等式
我正在努力学习Javascript,但我遇到了一个问题。我有一个文本输入字段,人们可以在其中输入一个数学方程,然后得到答案。问题是它总是返回等式,而不是答案。那么如何将字符串转换为数学表达式呢 假设您已经有了一个字符串中的方程式,您可以执行以下操作之一: 1使用Eval 这是一个函数,它将接受一个字符串并像运行普通JavaScript一样运行它 即 将在控制台中生成“this is from a string:O” 虽然这很简单,但不值得推荐,因为它可以让任何用户在页面上输入他们想要的任何代码 2分离并分析您的输入 可能更好的方法是为方程的不同部分添加额外的输入框 例如,如果总和为1+1,则每个字符将输入到不同的文本框中,数字的每个字符串将使用Javascript将字符串转换为等式,javascript,string,Javascript,String,我正在努力学习Javascript,但我遇到了一个问题。我有一个文本输入字段,人们可以在其中输入一个数学方程,然后得到答案。问题是它总是返回等式,而不是答案。那么如何将字符串转换为数学表达式呢 假设您已经有了一个字符串中的方程式,您可以执行以下操作之一: 1使用Eval 这是一个函数,它将接受一个字符串并像运行普通JavaScript一样运行它 即 将在控制台中生成“this is from a string:O” 虽然这很简单,但不值得推荐,因为它可以让任何用户在页面上输入他们想要的任何代码
parseFloat(“1”)进行计算代码>或parseInt(“1”)代码>将从字符串转换为数字,具体取决于您需要的类型
3从一个字符串中分离出来
如果您希望只有一个文本框,那么我的建议是使用.split()将输入字符串分隔成一个子字符串数组代码>函数
下面是一个示例,说明如何进行此操作,然后处理结果
function calculateEquation(input) {
// Assume input is 1 + 1
// splits strings into an array of subStrings based on the value given
// in this case it is split everytime there is a space
let subStrings = input.split(" ");
let l = parseFloat(subStrings[0]); // convert values on the left and right into numbers
let r = parseFloat(subStrings[2]);
let sum = 0;
switch (subStrings[1]) {
case "+": sum = l + r; break;
case "-": sum = l - r; break;
case "*": sum = l * r; break;
case "/": sum = l / r; break;
}
return sum;
}
如果您的网页中有一个输入字段,您可以通过多种方式访问它的内容。例如:
<body>
<input type="text" id="myText" value="Write the equatation here...">
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var dangerousInput = document.getElementById("myText").value;
document.getElementById("demo").innerHTML = eval(dangerousInput);
}
</script>
</body>
但千万不要这样使用eval()!
你应该把用户输入当作有害代码,这样你就可以在评估之前考虑一些解析。
引用自:
eval()是一个危险的函数,它执行传递的代码
以调用方的权限。如果使用字符串运行eval()
这可能会受到恶意方的影响,您最终可能会运行
用户计算机上具有您的权限的恶意代码
网页/分机。更重要的是,第三方代码可以看到
调用eval()的作用域,这可能导致可能的攻击
以类似功能不易受影响的方式
使用eval()
函数。无论你做什么,都不要使用eval
。没有你的代码,你怎么能指望别人知道你的代码哪里错了?@Kindusereval()
可能不安全,因为它也会执行字符串中的任何代码。这很快也很简单,但是对于需要安全性的应用程序,可能应该使用自定义函数(或者从传递到eval的字符串中去掉任何javascript的函数)。@Kinduser:不要在这里教坏习惯,即使是为了学习。人们可能没有意识到这只是为了学习。
<body>
<input type="text" id="myText" value="Write the equatation here...">
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var dangerousInput = document.getElementById("myText").value;
document.getElementById("demo").innerHTML = eval(dangerousInput);
}
</script>
</body>
var dangerousInput = new String(document.getElementById("myText").value);
document.getElementById("demo").innerHTML = eval(dangerousInput.toString());