我有这个任务:将字符串中的所有数字相加并执行乘法运算
input: "3 chairs, 2 tables, 2*3 forks" result: 11
我已经有正则表达式来执行此操作:
eval(str.match(/(\d[\d\.\*]*)/g).join(' + '))
Run Code Online (Sandbox Code Playgroud)
但我想添加选项来忽略括号内的数字"()"
input: "2 chairs, 3 tables (1 broke)" result: 5
怎么做?
正则表达式对我来说总是很痛苦:(
一种简单的方法是执行第一次传递并删除所有带括号的表达式.
str = str.replace(/\([^\)]*\)/g, "");
// now run your original algorithm to sum/multiply...
// ...
Run Code Online (Sandbox Code Playgroud)
这不是超级高效,但它可以完成这项工作.
我应该注意,这不会处理嵌套的括号,但这似乎不是必需的.
| 归档时间: |
|
| 查看次数: |
686 次 |
| 最近记录: |