繁体   English   中英

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

[英]Why does .split(“\\”) generate an exception?

我有一个表示目录的字符串,其中\\用于分隔文件夹。 我想基于"\\\\"进行拆分:

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

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

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

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

或者您可以使用:

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

另外,供参考:

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

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

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

因此,现在我们看到,为了在String获得\\ ,我们需要"\\\\"

正则表达式\\\\匹配单个反斜杠,因为\\是正则表达式中的特殊字符,因此必须进行转义。 一旦将其用引号引起来,也就是将其转换为String ,我们需要转义每个反斜杠,产生"\\\\\\\\"

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

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

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

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

有关更多详细信息,请单击此处

\\作为正则表达式的一部分具有含义,因此也必须将其引起来。 尝试\\\\\\\\

Java将位于\\\\\\\\并产生\\\\ ,这是正则表达式处理器获取\\

使用分隔符:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM