对于我的问题,我已经完成this thread,但没有得到我的问题的帮助。我正在使用以下行:
String[] result = s.split("\\",-1);
在我的Date
课程中,并致电:
Date date1 = new Date("20\01\2012");
但它不起作用。我得到一个例外:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.compile(Pattern.java:1671)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at java.lang.String.split(String.java:2313)
at Date.<init>(Date.java:84)
at Date.main(Date.java:279)
答案 0 :(得分:6)
我认为这是你自己的Date
课程,而不是java.util.Date
。如果希望参数包含反斜杠,则需要编写new Date("20\\01\\2012")
。您还必须将"\\\\"
写为split
的参数,以获得与单个反斜杠匹配的正则表达式。
原因是\
是正则表达式中的特殊字符,因此必须使用另一个反斜杠来转义它。所以你想要的正则表达式实际上是\\
。但是要在Java代码中输入它,必须转义每个反斜杠 - 也就是说,必须编写"\\\\"
。
答案 1 :(得分:5)
在正则表达式中,你需要4 \
来匹配一个(正则表达式只需要两个,但它是一个Java字符串,所以你也需要转义它们):
String[] result = s.split("\\\\",-1);
现在,如果您要解析日期,请使用DateFormat#parse
...