рекурсивная замена на javascript регулярное выражение - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть строка: pow (pow (487,2) +873,2), которую я генерирую из калькулятора, который я создаю. Я хочу перенести его на ((487 ^ 2) + 873) ^ 2.

У меня не было проблем с переносом пауза (487,2) до 487 ^ 2 с использованием

var string = `pow(487,2)`;
console.log(string.replace(/pow\((.*?),(.*?)\)/g,'$1^$2'));

Проблема в том, что я не знаю, как с этим рекурсивно обращаться с pow (pow (487,2) +873,2), чтобы стать ((487 ^ 2) + 873) ^ 2. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 апреля 2020

вы можете написать рекурсивную функцию для достижения вот этого

var string = `pow(pow(487,2)+873,2)`;
var numberOfOccurance = string.match(/pow/g).length;
const makeTranspile=(str,nooc)=>{
  const newStr=str.replace(/pow\((.*?),(.*?)\)/g,'($1)^$2');
  if(nooc>1)
  {
  return makeTranspile(newStr,nooc-1)
  }
  return newStr
}


const finalString=makeTranspile(string,numberOfOccurance);
console.log(finalString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...