题目描述一段字符串,中多个重复出现的字符,要去掉,但是不知道相关的正则方法相关代码 String ss="SUM(TA0047/(TA0012+TA0023+SUM(TA0034+TA0045)))";你期待的结果是什么?实际看到的错误信息又是什么?结果就是 TA0047/(TA0012+TA0023+TA0034+TA0045)问题描述去掉 SUM() java的api replace 或者replaceAll 只能去掉SUM 但是括号的位置是不固定的。目前没想到怎么做。 解析成char 之后循环查询标记位置,但是思路不清晰。求助
1 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
因你没有说明 js 字符串的具体用法,这里假设你是用 java 生成动态的 javascript 脚本(字符串),然后用 node.js 之类的 javascript 引擎执行。
首先我不赞成替换/删除字符串SUM() 的处理方式,因它需要考虑太多因素,基本上你要做一个 javascript 语法分析器才能正确实现,比如以下情况
let r = SUM(a+b)/c;const CHECKSUM = 100;let log = "SUM(1+2)?";
若只需要考虑算术运算(加减乘除),即当
SUM(a)
结果等于(a)
时,可直接删除 SUM,保留括号。若考虑完整的 javascript 运行环境,可植入一段 SUM 定义函数,如
function SUM(n) { return n; }
这样原字符串便不需要修改。Java 示例
String injectScript = "function SUM(n) {return n;};";String ss="SUM(TA0047/(TA0012+TA0023+SUM(TA0034+TA0045)))";jsExec(injectScript + ss);
添加回答
举报
0/150
提交
取消