最近在玩Spring Cloud。而我想从一个URL中提取出jar的名称和jar中的文件名。
例如,我有一个网址:
jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json
我想得到两个 String
/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar
和
/BOOT-INF/classes/filename.json
请注意,在两个 String
中都没有 !
。我怎样才能做到这一点?
这里的一个主要问题是 spring 将在 BOOT-INF/classes
之后添加 !
并创建一个新的 Jar URL 分隔符。
最佳答案
使用split
和分隔符!
,然后合并结果
String s = "jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json";
String[] arr = s.split("!");
System.out.println(arr[0]);
System.out.println(arr[1]+arr[2]);
输出
jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar
/BOOT-INF/classes/filename.json
或者您也可以使用正则表达式将 jar!
上的字符串拆分为包含它的分隔符,然后将所有 !
替换为空字符串
String s = "jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json";
String[] arr = s.split("(?<=jar!)");
System.out.println(arr[0].replaceAll("!", ""));
System.out.println(arr[1].replaceAll("!", ""));
输出
jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar
/BOOT-INF/classes/filename.json
关于java - 如何从 Spring Cloud 中的 URL 中提取 jar 名称和文件名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57139580/