javascript - 使用 Javascript 正确解析函数内的文本
问题描述
我收到了另一个软件程序的一组文本功能,我需要对其进行修改然后保存,并试图找到执行此操作的最佳方法。
我可以收到这样的文字:
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);
任何想法如何做到这一点是更好,更简单的方法?
解决方案
您可以捕获word
括号内的内容Sum()
并替换它:
const input_text = "TEXT_I_WANT_TO_ADD ";
const text = `Sum(Revenue) + Sum({<CostCentre={'$(=Sum(FIELD))'}>}COGS)`;
const result = text.replace(/Sum\(\w+\)/g, match => `Sum(${input_text})`);
console.log(result);
推荐阅读
- javascript - 为什么 JQuery (!) 不赋值只返回 false
- python - 在调用 haarcascade_mcs_mouth.xml 时,它在 opencv python 中引发错误
- reactjs - 部署后的 Webpack 包和源 React 文件
- sql - 根据来自另一个表的序列从另一个获取序列字段
- flutter - Flutter bloc:BlocBuilder 在第一次声明状态时不会重新调用构建器方法
- web-scraping - 访问第一个
- div下的元素
- react-native - RN Picker.Item 在 Appium 中打开时没有可访问性标签
- r - 在 R 中聚合条件
- r - R 脚本中的内联 data.frame 包含
- python - PyPDF2循环虽然PDF urls文本文件失败