Java中想通过 replacAll 完成字符串的替换;我是这样写的 replaceAll(regex,func("$1"));问题是这样的: 运行到这里时,函数会先去调用func("$1"),以“$1”为String参数;
而我想要的效果是 先匹配,匹配出 $1 后 调用func("$1")返回一个新字符串,替换原来的字符串?请问,要实现我的功能,该怎么做?
而我想要的效果是 先匹配,匹配出 $1 后 调用func("$1")返回一个新字符串,替换原来的字符串?请问,要实现我的功能,该怎么做?
我现在想把这个$1作为参数 传给 func(String), 返回一个String 来替换 匹配出的内容 saying.replaceAll(" \\[\\d{1};(3\\d{1})m(.*) \\[m","<font color="+CssUtil.getColor("$1")+"$2"+"</font>");代码就是这么写的了。。
的确如此,后来用 matcher.appendReplacement 循环来替换了
Pattern p = Pattern.compile(" \\[\\d{1};(3\\d{1})m(.*) \\[m");
Matcher m = p.matcher("123a123b");
StringBuffer sb = new StringBuffer();
while(m.find())
{
String s = m.group();
m.appendReplacement(sb, "<font color=\""+CssUtil.getColor(s)+"\"</font>");
}
m.appendTail(sb);
System.out.println(sb.toString());