1

我有一个表示目录的字符串,\用于分隔文件夹。我想根据以下内容进行拆分"\\"

String address = "C:\\saeed\\test";
String[] splited = address.split("\\");

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

4

5 回答 5

7

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

String[] separated = address.split("\\\\");

或者你可以使用:

String[] separated = address.split(Pattern.quote("\\")); 

另外,供参考:

String address = "C:\saeed\test";

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

String address = "C:\\saeed\\test";

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

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

于 2013-08-10T20:26:01.863 回答
3

String#split()方法采用正则表达式。在正则表达式中,您需要转义反斜杠。然后对于 Java 中的字符串文字,您需要转义反斜杠。总之,您需要使用 4 个反斜杠:

String[] splited = address.split("\\\\");
于 2013-08-10T20:23:37.770 回答
1

您需要使用\\\\而不是\\.

反斜杠 (\) 是 Java 字符串中的转义字符。如果要将反斜杠用作文字,则必须键入 \\\\ ,因为 \ 也是正则表达式中的转义字符。

更多详情请点击这里

于 2013-08-10T20:24:05.443 回答
1

\作为正则表达式的一部分具有意义,因此也必须引用它。试试\\\\

Java 将拥有\\\\并生成\\正则表达式处理器需要获取的内容\

于 2013-08-10T20:24:49.793 回答
0

使用分隔符:

String address = "C:\saeed\test";
String[] splited = address.split(System.getProperty("file.separator"));
于 2013-08-10T20:24:13.813 回答