• 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])($|[^>])了。

  • 相关阅读:
    SqlServer事务语法及使用方法
    mysql解决自动断开8小时未曾用过的链接
    JIRA license申请和语言包下载
    String literal is not properly closed by
    android开发 NDK 动态链接多个第三方库(so)
    vim字符串替换
    VMware tools的用途及安装[跨系统文件拖拽]
    十大高明的Google搜索技巧
    安装ADT-20.0.3的时候产生org.eclipse.cdt.feature.group 0.0.0' but it could not be ..
    [Android NDK]修复/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 问题
  • 原文地址:https://www.cnblogs.com/sky7034/p/2169465.html
Copyright © 2020-2023  润新知