gpt4 book ai didi

java - 在 Windows/Linux/OSX 上提取完整文件名

转载 作者:行者123 更新时间:2023-12-02 07:10:41 27 4
gpt4 key购买 nike

我正在尝试修改以下代码:

 String[] sarr = (new String("a\\b\\c\\d.jar")).split("[(/)|(\\)]");
System.out.println(sarr[sarr.length-1]);

这样新字符串可以是任何系统上 jar 文件的任何路径。使用 Perl 正则表达式我可以轻松做到这一点,但是使用 Java 正则表达式我无法获得所需的结果。我怎样才能做到这一点?我需要获取 d.jar。

我看到了很多不同的帖子,但它们都是具体的而不是笼统的或不符合我的需要。

谢谢。

最佳答案

Java 字符串文字 "[(/)|(\\)]" 表示正则表达式 [(/)|(\)],它是将匹配任何单个 (/|) 字符的字符类。相反,您可能需要正则表达式 [/\\] (匹配单个正斜杠或反斜杠),这又意味着 "[/\\\\]" 为Java 字符串文字。

str.split("[/\\\\]");

或者,如果您知道您将始终处理当时运行的系统的 native 路径(即在 Windows 上运行时的 C:\Users\something/home/user(在 Linux/Mac/等上运行时),那么您可以使用 java.io.File 类:

File f = new File(fullPath);
String name = f.getName();

getName() 仅返回姓氏部分,还有 getPath() 返回存储在 File 对象中的完整路径字符串(可能是相对路径)和返回绝对路径的 getAbsolutePath() (如果已经是绝对路径,则与 getPath() 相同,或者 getPath( ) 以当前工作目录为前缀(如果是相对目录)。

但是,如果您可能在类 Unix 系统上处理 Windows 路径,反之亦然,那么您必须坚持进行自己的字符串操作。

关于java - 在 Windows/Linux/OSX 上提取完整文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15567693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com