为什么.split("\\")会生成异常?

sae*_*eed 1 java string split

我有一个表示目录的String,\用于分隔文件夹.我想拆分基于"\\":

String address = "C:\\saeed\\test";
String[] splited = address.split("\\");
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个java.util.regex.PatternSyntaxException.

Ste*_* P. 7

正如其他人所建议的那样,您可以使用:

String[] separated = address.split("\\\\");
Run Code Online (Sandbox Code Playgroud)

或者您可以使用:

String[] separated = address.split(Pattern.quote("\\")); 
Run Code Online (Sandbox Code Playgroud)

另外,供参考:

String address = "C:\saeed\test";
Run Code Online (Sandbox Code Playgroud)

不会编译,因为\s它不是有效的转义序列.这里\t被解释为制表符,你真正想要的是:

String address = "C:\\saeed\\test";
Run Code Online (Sandbox Code Playgroud)

所以,现在我们看到,为了获得\一个String,我们需要"\\".

正则表达式\\匹配单个反斜杠,因为它\是正则表达式中的特殊字符,因此必须进行转义.一旦我们把它放在引号中,也就是把它变成a String,我们需要逃避每个反斜杠,屈服"\\\\".