Я получаю текстовый набор функций для другой программы, который мне нужно изменить, а затем сохранить, и я пытаюсь найти лучший способ сделать это.
Я мог бы получить такой текст:
Sum(Revenue) + Sum({<CostCentre={'$(=Sum(FIELD))'}>}COGS)
Я хотел бы иметь возможность добавлять текст сразу после Sum(
, за которым сразу НЕ следует {<
В идеале мой конечный результат должен выглядеть следующим образом:
Sum(TEXT_I_WANT_TO_ADD Revenue) + Sum({<CostCentre={'$(=Sum(TEXT_I_WANT_TO_ADD FIELD))'}>}COGS)
Есть идеи, как этого добиться простым способом?До сих пор моей единственной идеей было использовать split, а затем посмотреть на следующий объект массива, чтобы определить, содержит ли он {<
, однако мне интересно, есть ли более простой способ сделать это.
Моя попытка(который работает, но трудно следовать, и не уверен, что он будет работать всегда):
let text = `Sum(Revenue) + Sum({<CostCentre={'$(=Sum(FIELD))'}>}COGS)`;
let input_text = 'TEXT_I_WANT_TO_ADD ';
let split_text = 'Sum('
let split = text.split(split_text);
console.log(split);
let final_text = '';
for (let i in split) {
let split_modified;
// Not last item
if (i < split.length - 1) {
let next = (parseInt(i) + parseInt(1));
// Does not include {<
console.log(next, split[next]);
if (!split[next].includes('{<')) {
final_text += split_text + input_text;
}
// Does include {<
else {
final_text += split_text + split[next]
}
}
// Last item
else {
final_text += split[i]
}
}
console.log(final_text);
Есть идеи, как сделать это лучше и проще?