日期:2014-05-20  浏览次数:20875 次

java同时替换多个字符串
例如,有一个字符串"abcdefg"
现在的要求是把"abc"变成"efg"
把"efg"变成"xyz"
怎么搞?
即目标串为:"efgdxyz"
(PS:replaceAll会导致同步问题,就是说"abc"变成"efg"后,立刻又变成的"xyz")

------解决方案--------------------
使用正则表达式逐个替换

    static void replace() {
        Pattern p = Pattern.compile("abc
------解决方案--------------------
efg");
        Matcher m = p.matcher("abcdefg");
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            if(m.group().equals("abc")) m.appendReplacement(sb, "efg");
            else if(m.group().equals("efg")) m.appendReplacement(sb, "xyz");
        }
        m.appendTail(sb);
        System.out.println(sb.toString());
    }

------解决方案--------------------
引用:
使用正则表达式逐个替换

    static void replace() {
        Pattern p = Pattern.compile("abc
------解决方案--------------------
efg");
        Matcher m = p.matcher("abcdefg");
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            if(m.group().equals("abc")) m.appendReplacement(sb, "efg");
            else if(m.group().equals("efg")) m.appendReplacement(sb, "xyz");
        }
        m.appendTail(sb);
        System.out.println(sb.toString());
    }

正解+1