看看这个
class T
{
public static void main(String[] args)
{
String c="\\'?\\'";
System.out.println(c);
System.out.println("'?'".replaceAll("'\\?'","c"));
System.out.println("'?'".replaceAll("'\\?'",c));
}
}
class T
{
public static void main(String[] args)
{
String c="\\'?\\'";
System.out.println(c);
System.out.println("'?'".replaceAll("'\\?'","c"));
System.out.println("'?'".replaceAll("'\\?'",c));
}
}
怎么會這樣?
在javadoc的Summary of regular-expression constructs中也沒有提到這個問題呀
使用c="\\'?\\'" 替换"'?'",其执行的是替换"'?'"中的"'",这样就会产生搂祝的结果'?'?'?',而且,直接替换"?"会出现异常。
若有replaceAll的原码可以参考一下。