你能解释一下3
和4
吐出错误的原因吗?
在1和2个案例中,我得出结论,转义语法需要两个\
字符,如java中的\\
。
但在3
和4
个案例中,它不起作用。
特别是在4
情况下,更奇怪的是当我放\\\\
时,它有效。
str = "$12$ \\-\\ $25$";
System.out.println(str.replaceAll("\\$", "")); //1 : 12 \-\ 25 (i get how this works)
System.out.println(str.replaceAll("^\\$", "")); //2 : 12$ \-\ $25$ (i get how this works)
System.out.println(str.replaceAll("\\$$", str)); //error 3 want to print : $12$ \-\ $25
System.out.println(str.replaceAll("\\\", "")); // error 4 want to print : $12$ - $25$
答案 0 :(得分:1)
关于案例4,您实际上需要另一个 \
System.out.println(str.replaceAll("\\\\", "")); // error 4 want to print : $12$ - $25$
原因是java将\
视为特殊字符,因此需要\\
才能在字符串中获得单个\
。但是,正则表达式也使用\
作为特殊字符,需要\\
来检查单个\
,因此要求您将其转义两次。
答案 1 :(得分:1)
案例3的问题似乎是替换字符串(第二个参数):它应该是一个空字符串。以下代码打印预期答案$12$ \-\ $25
。
public class HelloWorld{
public static void main(String []args){
String str = "$12$ \\-\\ $25$";
System.out.println(str.replaceAll("\\$$", ""));
}
}
案例4在@Oblivion Creations的答案中解决:你错过了一个\
。以下代码打印预期答案$12$ - $25$
。
public class HelloWorld{
public static void main(String []args){
String str = "$12$ \\-\\ $25$";
System.out.println(str.replaceAll("\\\\", ""));
}
}