使用JavaScript计算字符串"12+13.25*8*9.52",不能使用eval()方法
时间: 2024-05-04 20:17:18 浏览: 113
使用java处理字符串公式运算的方法
5星 · 资源好评率100%
可以通过字符串分割和循环计算来实现,具体步骤如下:
1. 将字符串按空格分割成数组,例如:["12", "13.25*8*9.52"]
2. 遍历数组,处理每个元素:
- 如果是数字直接加入结果数组
- 如果是表达式,先将乘法拆分成数组,例如:["13.25", "*", "8", "*", "9.52"]
- 遍历拆分后的数组,处理每个元素:
- 如果是数字直接加入临时数组
- 如果是乘法符号,将前后两个数字相乘,将结果加入临时数组
- 将临时数组中的所有数字相加,将结果加入结果数组
3. 将结果数组中的所有数字相加,得到最终结果
下面是实现代码:
```
function calculate(str) {
const parts = str.split(' ');
const result = [];
for (let i = 0; i < parts.length; i++) {
const part = parts[i];
if (/^\d+(\.\d+)?$/.test(part)) {
result.push(parseFloat(part));
} else {
const subParts = part.split('*');
const temp = [];
for (let j = 0; j < subParts.length; j++) {
const subPart = subParts[j];
if (/^\d+(\.\d+)?$/.test(subPart)) {
temp.push(parseFloat(subPart));
} else if (subPart === '*') {
const prev = temp.pop();
const next = parseFloat(subParts[j + 1]);
temp.push(prev * next);
j++;
}
}
const sum = temp.reduce((acc, val) => acc + val, 0);
result.push(sum);
}
}
const finalResult = result.reduce((acc, val) => acc + val, 0);
return finalResult;
}
console.log(calculate('12 13.25*8*9.52')); // 1003.4
```
阅读全文