我很难使用 7( 7+(7 (7+1) ))(7)
等括号执行数学运算。我正在对我的操作执行eval()
。我认为解决这个问题的方法是将其转换为 7*(7+(7*(7+1)))*(7)
。我试过了
/(?!\*\()(\()/g
避免在正则表达式上使用 '*('
并接受 '('
作为替换方法,但我失败了。我正在考虑插入 *
在 (
之前。如何正确运行 7( 7+(7 (7+1) ))(7)
?我正在为一个计算器项目执行此操作。
最佳答案
这是一个非正则表达式解决方案。首先用空字符串替换所有空格。然后,仅当括号前面没有运算符时,才将“(”替换为“*(”。
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);
关于javascript - 如何从带括号的字符串执行数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065736/