javascript - 如何在JS中替换字符串公式中的整数
问题描述
我想替换字符串公式中的整数来评估表达式。
我有一个数组,例如
var value_array=[
{value: "11", order: "1"},
{value: "4", order: "2"},
{value: "31", order: "3"},
{value: "41", order: "4"},
{value: "51", order: "5"},
{value: "61", order: "6"},
{value: "71", order: "7"},
{value: "80", order: "8"},
{value: "91", order: "9"},
{value: "101", order: "10"},
{value: "111", order: "11"},
{value: "128", order: "12"},
{value: "131", order: "13"},
{value: "145", order: "14"}
];
我的公式是((1+14)*5+12*3-7*8/2+4)
我想用相应的顺序值替换整数。
我应该得到((11+145)*51+128*31-71*80/4+41)
,然后我将评估由 10545 产生的字符串。
谢谢你的帮助
解决方案
尝试replace
和find
:
let str = `((1+14)*5+12*3-7*8/2+4)`
let value_array = [
{ value: '11', order: '1' },
{ value: '4', order: '2' },
{ value: '31', order: '3' },
{ value: '41', order: '4' },
{ value: '51', order: '5' },
{ value: '61', order: '6' },
{ value: '71', order: '7' },
{ value: '80', order: '8' },
{ value: '91', order: '9' },
{ value: '101', order: '10' },
{ value: '111', order: '11' },
{ value: '128', order: '12' },
{ value: '131', order: '13' },
{ value: '145', order: '14' }
]
let res = str.replace(/([^\d]*?)(\d+)([^\d]*?)/g, (...args) => {
return args[1] + value_array.find(o => o.order === args[2]).value + args[3]
})
console.log(res)
var str = '((1+14)*5+12*3-7*8/2+4)';
var value_array = [{ value: '11', order: '1' }, { value: '4', order: '2' }, { value: '31', order: '3' }, { value: '41', order: '4' }, { value: '51', order: '5' }, { value: '61', order: '6' }, { value: '71', order: '7' }, { value: '80', order: '8' }, { value: '91', order: '9' }, { value: '101', order: '10' }, { value: '111', order: '11' }, { value: '128', order: '12' }, { value: '131', order: '13' }, { value: '145', order: '14' }];
var res = str.replace(/([^\d]*?)(\d+)([^\d]*?)/g, function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return args[1] + value_array.find(function (o) {
return o.order === args[2];
}).value + args[3];
});
console.log(res);
推荐阅读
- php - 如何将循环单选按钮值插入数据库
- regex - 如何检查字符串是否与正则表达式匹配
- apache-poi - 还有其他人在使用 Apache POI 向 Excel 添加纯色背景颜色时遇到问题吗?
- java - 为什么不可达?
- php - 在 laravel 图表上显示 2 个小数点
- reactjs - 如何使用 React 测试 prop 元素中的组件?
- html - 如何将反应应用程序导出为纯静态 html
- java - 为什么这两段 Java 代码会产生 2 个不同的结果?
- docker - 使用 Quarkus,我如何在 docker 镜像中构建原生镜像(使用 Kotlin 和 Gradle)
- python - 从网站中提取数据