mikasatong 发表于 2021-7-9 14:35

js如何替换数学表达式中的字符

本帖最后由 mikasatong 于 2021-7-9 15:31 编辑

比如公式是一个字符串" (filed1+filed3+filed4+filed11)/filed2 - file5" ,其中filed个数不定,但都是filed开头,只是后面的数字不一样假设 filed1是6,filed2是8,filed3是9,filed4是10,filed5是12,filed11是46

最后如何替换成"(6+9+10+46)/8-12"


之前误导了数字的值,导致大家都认为替换filed就可以,现在把数字打乱了。



我目前想到的一种解决方案:
把所有的表达式 比如 + - */ ( ) =
全部替换成空格,然后通过空格split得到所有的filed数组,再遍历数组对原始字符串进行替换。

不知道有没有大佬有更简单的方法。

stu2162583 发表于 2021-7-9 14:35

var m = { filed1:6,filed2:8,filed3:9,filed4:10,filed5:12,filed11:46};

`(filed1+filed3+filed4+filed11)/filed2 - filed5`.replace(/(filed\d+)/g, function(match) {
    return m
})

diaozatian815 发表于 2021-7-9 15:08

WolfAvenue 发表于 2021-7-9 15:11

没这么简单吧,直接filed替换成 空{:301_1001:}

mikasatong 发表于 2021-7-9 15:12

diaozatian815 发表于 2021-7-9 15:08
var filed1 = 1;
var filed2 = 2;
...


可能是我没有描述清楚,"(filed1+filed3+filed4+filed11)/filed2 - file5" 这一串在字符串里面

mikasatong 发表于 2021-7-9 15:14

WolfAvenue 发表于 2021-7-9 15:11
没这么简单吧,直接filed替换成 空

你这太偷懒了哟,我只是举个例子 filed1可以是任何数。

stu2162583 发表于 2021-7-9 15:15

eval(`(filed1+filed3+filed4+filed11)/filed2 - filed5`.replaceAll('filed', ''))

mikasatong 发表于 2021-7-9 15:16

想到了一种解决方案
把所有的表达式 比如 + - */ ( ) =
全部替换成空格,然后通过空格split得到所有的filed数组,再遍历数组对原始字符串进行替换。

不知道有没有大佬有更简单的方法

mikasatong 发表于 2021-7-9 15:17

stu2162583 发表于 2021-7-9 15:15
eval(`(filed1+filed3+filed4+filed11)/filed2 - filed5`.replaceAll('filed ...

我只是举个例子 filed1可以是任何数。不一定就是1:lol

WolfAvenue 发表于 2021-7-9 15:24

mikasatong 发表于 2021-7-9 15:14
你这太偷懒了哟,我只是举个例子 filed1可以是任何数。

正则匹配替换吧
页: [1] 2
查看完整版本: js如何替换数学表达式中的字符