最近编个小程序,要涉及到读取用户输入的文件路径,并根据其保存到相应的目录。
由于用户输入的是一般的字符表达式,比如“D:\document\myprogram\first.java”.需要将'\'换成'\\'才行。刚开始以为replaceAll("\\", "\\\\”)就可以了。而后来发现需写成replaceAll("
\\\\", "
\\\\\\\\”)才行。自己又编了个程序测试一下:
String s = "D:\\documents\\first.java"
String ss = ss = s.replaceAll("
\\\\", "
\\\\\\\\”);
System.out.println("s= " + s);
System.out.println("ss=" + ss);
结果输出:
s= D:\documents\first.java
ss= D:\\documents\\first.java
后来仔细想想才明白,首先,java会把“\\\\”解释成一个字符串,接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“\”。对后面的那个8个\来说,最终会被解释成“\\”。