当我做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),为什么呢?我该怎么办?
当我做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),为什么呢?我该怎么办?
replaceFirst
正在使用正则表达式语法,其中^
有特殊含义(它表示字符串或行的开始,取决于使用的修饰符)。
您需要转义^
,比如"2\\^2"
,或者为了让您的生活更简单,请使用Pattern.quote("2^2")
为您做到这一点。
所以,你的代码应该更像:
String s = "2^2";
System.out.println(s.replaceFirst(Pattern.quote("2^2"),"4"));
在正则表达式中,^
字符有着特殊的含义。它匹配一行的开始。
改为使用s.replaceFirst("2\\^2","4")
- 反斜杠意味着将^
视为正常字符,而不是将其赋予其特殊含义。