下面的代码片段在linux下工作正常,但在windows下给我错误(这很奇怪,因为jvm/jdk应该是与操作系统无关的).
File f = ... String[] split = f.getPath().split(File.separator);
这是错误:
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.split(Unknown Source) at java.lang.String.split(Unknown Source)
知道什么是错的吗?
问题是反斜杠是使用正则表达式的特殊字符(其他特殊字符的转义字符).你应该用
String[] split = f.getPath().split("\\\\");
为了按标志分开\
.
如果你想让这个平台保持独立,我会看到你遇到的问题.在这种情况下,你可以做这样的事情:
String splitter = File.separator.replace("\\","\\\\"); String[] split = abc.split(splitter);