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());
}
------解决方案--------------------
正解+1