zoukankan      html  css  js  c++  java
  • java的appendReplacement使用指南

    我想处理一段文字,替换其中的关键字为加红,现在写了下面的程序,有两个方法,都是用来处理加红效果的,然而,都没有达到预期效果,其结果如下:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class TestGetNewStr {

        public static String getNewStr(String str,String regEx,StringBuffer pre) {
            Pattern p = Pattern.compile(regEx);
            Matcher m = p.matcher(str);
            int startIndex = 0;
            int endIndex = 0;
            String oldStr = "";
            String newStr = "";
            boolean b = true;
            if (m.find()) {
                oldStr = m.group();
                newStr = "<span style=\"color:red\">"+ oldStr +"</span>";
                startIndex = m.start();
                endIndex = m.end();   
                pre.append(str.substring(0, startIndex) + newStr);2011年07月
                String temp = str.substring(endIndex);
                getNewStr(temp,regEx,pre);
                b = false;
            }
            if (b) {
                pre.append(str);
            }
            return pre.toString();
        }

        public static String getNewStr2(String str,String regEx,StringBuffer pre) {
            Pattern p = Pattern.compile(regEx);
            Matcher m = p.matcher(str);
            while (m.find()) {
                m.appendReplacement(pre, "<span style=\"color:red\">$2</span>");
            }
            m.appendTail(pre);
            return pre.toString();
        }在美国如何进行债务追讨

        public static void main(String[] args) {
            String str = "nbasfksdNbafspandjdk<a>dksfdkspanBajfkdadd</a><span style=\"color:red\">djksnbakdspanjksjf</span>djfkspandjdfknba";
            String regEx = "(^|[^</])([Ss][Pp][Aa][Nn])($|[^>])";
            StringBuffer pre = new StringBuffer();
            System.out.println(getNewStr(str,regEx,pre));
            StringBuffer pre2 = new StringBuffer();
            System.out.println(getNewStr2(str,regEx,pre2));       
        }
    }
    运行结果 :

    nbasfksdNba<span style="color:red">fspand</span>jdk<a>dksfd<span style="color:red">kspanB</span>ajfkdadd</a><span style="color:red">djksnbak<span style="color:red">dspanj</span>ksjf</span>djf<span style="color:red">kspand</span>jdfknba


    nbasfksdNba<span style="color:red">span</span>jdk<a>dksfd<span style="color:red">span</span>ajfkdadd</a><span style="color:red">djksnbak<span style="color:red">span</span>ksjf</span>djf<span style="color:red">span</span>jdfknba
    请问我如何做呢?因为要匹配大小写,所一我的正贼表达式写成那样了,比如,如果你搜索nba的匹配的话,那就是(^|[^</])([Nn][Bb][Aa])($|[^>])了。

  • 相关阅读:
    js --- for in 和 for of
    vue -- config index.js 配置文件详解
    vue -- 脚手架之webpack.dev.conf.js
    vue --- 解读vue的中webpack.base.config.js
    vue 引入第三方字体包
    js call 和 apply
    vue2.0中的$router 和 $route的区别
    懒加载js实现和优化
    vue的指令在webstrom下报错
    BFC的布局规则和触发条件
  • 原文地址:https://www.cnblogs.com/sky7034/p/2169465.html
Copyright © 2011-2022 走看看