我很难用7( 7+(7 (7+1) ))(7)
这样的括号执行数学运算。我在操作上正在eval()
。我想解决这个问题就是将其转换为7*(7+(7*(7+1)))*(7)
。我试过了
/(?!\*\()(\()/g
避免使用正则表达式'*('
并接受'('
替换方法,但我失败了。我想在*
之前插入(
。如何正确运行7( 7+(7 (7+1) ))(7)
?我正在为计算器项目做这件事。
答案 0 :(得分:1)
这是一种非正则表达式解决方案。首先用空字符串替换所有空格。然后替换"("用" *("仅当括号前面没有操作符时。
var testString = ("7( 7+(7 (7+1) ))(7)").split("").filter((e) => e!=" ");
var arr = ["+", "-", "/", "("];
var resultString = testString.reduce(function(prev, curr, i)
{
if(arr.indexOf(i-1 ? testString[i-1] : "test") && curr == "(") {
return prev += "*(";
}else{
return prev += curr;
}
},"");
console.log(resultString);

答案 1 :(得分:0)
// (expr: string) => number
function evaluate(expr) {
return eval(
expr
.replace(/\s+/g, '') // remove spaces
.replace(/([\d|\)])\(/g, '$1*(') // insert multiplication signs
)
}