Как выполнить математическую операцию из строки с помощью скобок?

Мне сложно выполнять математику с такими скобками 7( 7+(7 (7+1) ))(7). Я занимаюсь eval()своими делами . Я решил решить это, чтобы преобразовать это 7*(7+(7*(7+1)))*(7). Я старался

/(?!*()(()/g

чтобы избежать '*('regexp и принять '('метод замены, но я терпеть неудачу. Я думаю о вставке *раньше (. Как я могу работать 7( 7+(7 (7+1) ))(7)правильно? Я делаю это для калькулятора.

javascript,math,eval,

0

Ответов: 2


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);


0
// (expr: string) => number
function evaluate(expr) {
  return eval(
    expr
      .replace(/s+/g, '')             // remove spaces
      .replace(/([d|)])(/g, '$1*(') // insert multiplication signs
    )
}
JavaScript, математика, Eval,
Похожие вопросы