天天看点

String.format针对java的匹配正则表达式匹配上的字符串进行解决匹配替换的问题

1、问题描述:

1.1我这边需要对资讯内容进行打标更新,针对关键字需要转换Html的标签格式化进行替换掉展示高亮显示,然后进行前端展示,可是老代码是432个高亮词,100左右个标签,然后高亮显示,浏览器居然超时了,目前我们的架构规则是超时时间是30秒;

String.format针对java的匹配正则表达式匹配上的字符串进行解决匹配替换的问题

针对如此需要好好地进行代码逻辑上对这个打标进行优化。

1、逻辑上对原来的for循环进行重构,

2、对于数据库的查询改造成本地内存。 

2、重点是对于1000+字符串的替换这个需要好好地优化一下:

public static void main(String[] args) {
        String  hight=   "<d class='info-highlight-color'>%s</d>";
        String  content="这是测试的内容";
        content=String.format(hight,"测试");

        System.out.println(content);
    }
}      

测试类如上进行正则的匹配效果展示:

输出结果如下:

正则匹配成功!

<d class='info-highlight-color'>测试</d>

Process finished with exit code 0

针对如此,前面还有半角转全角--标签含有高亮词--各种类别的需要高亮词,各种交叉包含,字符串需要各种的排序,大字符先排序,然后先替换高亮,小段的字符串后续进行替换,然后替换时候使用正则 然后在匹配上断开然后在用StingBuilder进行拼接上。总体逻辑太繁琐,单独一个接口进行调用!

String.format针对java的匹配正则表达式匹配上的字符串进行解决匹配替换的问题

直接的逻辑处理进行拆分,在入库的时候进行全角替换;

打标处理之前进行图片替换,然后进行判断;

简化的处理逻辑如下,1000字的处理

String hight = "<d class='info-highlight-color'>%s</d>";
        String content = "这是测试的内容";
        String onePaterm = String.format(hight, "测试");
        content = content.replace("测试", onePaterm);
        System.out.println(content);      

正则匹配成功!

这是<d class='info-highlight-color'>测试</d>的内容