下面的代码片段在linux下工作正常,但在windows下给我错误(这很奇怪,因为jvm/jdk应该是与操作系统无关的).
File f = ...
String[] split = f.getPath().split(File.separator);
Run Code Online (Sandbox Code Playgroud)
这是错误:
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.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.split(Unknown Source)
at java.lang.String.split(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
知道什么是错的吗?
Par*_*alo 11
问题是反斜杠是使用正则表达式的特殊字符(其他特殊字符的转义字符).你应该用
String[] split = f.getPath().split("\\\\");
Run Code Online (Sandbox Code Playgroud)
为了按标志分开\
.
如果你想让这个平台保持独立,我会看到你遇到的问题.在这种情况下,你可以做这样的事情:
String splitter = File.separator.replace("\\","\\\\");
String[] split = abc.split(splitter);
Run Code Online (Sandbox Code Playgroud)
您应该考虑使用 java.nio 引入的 Path 类。即使混合分隔符它也能工作。这段代码:
Path path = Paths.get("c:\\a\\with spaces/b");
for(Iterator<Path> it= path.iterator(); it.hasNext();) {
System.out.println(it.next());
}
Run Code Online (Sandbox Code Playgroud)
印刷:
a
with spaces
b
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6374 次 |
最近记录: |