![](/img/trans.png)
[英]Why does SSL handshake give 'Could not generate DH keypair' exception?
[英]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.