我有一个文本输入,用户将写入一个字符串,例如 10+20-10-2*2+4/2
并且我想顺序执行算术运算,这意味着我想要 (10+20)-(10)-(2)*(2)+(4)/(2)
,根据上面的结果应该是 20
示例。
换句话说,我想从左边开始按顺序进行算术运算。任何人都可以帮助我解决这个问题,或者也许有一些想法也很好。谢谢。
请询问我是否需要更多信息。
$('#calculation').on('blur', function(e){
e.preventDefault();
var pattern=/^[-*/+0-9]+$/;
value=$(this).val();
if(value.match(pattern))
{
$(this).closest('tr').find('span.error').html('');
//$('#total').val(eval(value));
// No idea what to do
}
else
{
$(this).closest('tr').find('span.error').html('Invalid character');
}
});
最佳答案
Try this:
var str = '10+20-10-2*2+4/2';
var numbers = str.replace(/ /g, '').split(/[-+*\/]/g);
var operators = str.replace(/ /g, '').split(/\d*/g);
operators.shift();
var result = +numbers[0];
for (var i = 0; i < operators.length - 1; i++) {
result = eval( result + operators[i] + numbers[i + 1] );
}
alert(result);
DEMO
关于javascript - javascript中的顺序算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843062/