我花了一个小时去追踪我认为不正常的行为,使用replaceAll/replaceFirst
在String类中。
如果替换字符串中有反斜杠,则会在替换时删除它们。然后我读到可以使用Matcher.quoteReplacement(String)
来创建一个正确的替换字符串,但我的问题是为什么?我可以预期第一个参数应该被转义为Patter.quote(String)
,如果你不想要特殊含义,但我不明白为什么要改变替换 :(
是的,我将开始使用replace(CharSequence,CharSequence),只是想知道为什么 :)
这里有一个清楚显示“奇怪”行为的示例:
public static void main(String[] args) {
String out = "\\\\test\\\\";
System.out.println(out);
String result = "a".replaceAll("a", out);
System.out.println(result);
}
请注意第二行只有单个反斜杠,而不像第一行那样有两个。