String.replaceFirst错误? Java的

时间:2017-05-14 19:41:29

标签: java string

当我这样做时

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),为什么?我该怎么办?

2 个答案:

答案 0 :(得分:5)

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

你需要像^一样逃避"2\\^2",或者让你的生活更简单地使用Pattern.quote("2^2")为你做这件事。

所以你的代码应该更像:

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

答案 1 :(得分:2)

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

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