String 类有关replace的小知识
String aa = "java.long.String";
System.out.println(aa.replaceAll(".", "/"));
?
上面代码输出的结果是: ////////////////
因为String类的replaceAll方法第一个参数是正则表达式,而"."表示匹配所以字符。
?
参数为CharSequence的replace、replaceAll方法的原始功能代码
都是封装在Matcher类的replaceAll方法中。
replaceAll方法源码:
public String replaceAll(String regex, String replacement) {
??? return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}
?
?
replace方法源码:
public String replace(CharSequence target, CharSequence replacement) {
??????? return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
??????????? this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
Pattern.compile(target.toString(), Pattern.LITERAL)方法会用 LITERAL 模式来创建模式对象
这种模式对象中,元字符或转义序列不具有任何特殊意义。所以replace方法是纯粹的字符转换。
?
?