2017-05-14 67 views
0

当我做String.replaceFirst错误? Java的

String s = "2r2"; 
System.out.println(s.replaceFirst("2r2","4")); 

它的工作原理,打印4,但是当我做

String s = "2^2"; 
System.out.println(s.replaceFirst("2^2","4")); 

它不工作(它打印2^2),为什么呢?我该怎么办?

回答

5

replaceFirst正在使用正则表达式语法,其中^有特殊含义(它表示字符串或行的开始,取决于使用的修饰符)。

您需要转义^,比如"2\\^2",或者为了让您的生活更简单,请使用Pattern.quote("2^2")为您做到这一点。

所以,你的代码应该更像:

String s = "2^2"; 
System.out.println(s.replaceFirst(Pattern.quote("2^2"),"4")); 
2

在正则表达式中,^字符有着特殊的含义。它匹配一行的开始。

改为使用s.replaceFirst("2\\^2","4") - 反斜杠意味着将^视为正常字符,而不是将其赋予其特殊含义。