为了账号安全,请及时绑定邮箱和手机立即绑定

正则或者其他方法去除指定的字符或串

正则或者其他方法去除指定的字符或串

GCT1015 2018-09-23 21:39:53
题目描述一段字符串,中多个重复出现的字符,要去掉,但是不知道相关的正则方法相关代码    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 引擎执行。

  1. 首先我不赞成替换/删除字符串SUM() 的处理方式,因它需要考虑太多因素,基本上你要做一个 javascript 语法分析器才能正确实现,比如以下情况

    let r = SUM(a+b)/c;const CHECKSUM = 100;let log = "SUM(1+2)?";
  2. 若只需要考虑算术运算(加减乘除),即当 SUM(a) 结果等于 (a) 时,可直接删除 SUM,保留括号。

  3. 若考虑完整的 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);


查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 692 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信