Java 如何从SpringCloud的URL中提取jar中的jar名称和文件名?

Java 如何从SpringCloud的URL中提取jar中的jar名称和文件名?,java,spring,spring-boot,Java,Spring,Spring Boot,最近,我在玩春云。我想从URL中提取jar中的jar名称和文件名 例如,我有一个URL: jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json 我想得到两个Strings /my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar 及 请注意,没有。我怎样才能做到这

最近,我在玩春云。我想从URL中提取jar中的jar名称和文件名

例如,我有一个URL:

jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar!/BOOT-INF/classes!/filename.json
我想得到两个
String
s

/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar

请注意,没有
字符串中的code>。我怎样才能做到这一点


这里的一个主要问题是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:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar
/BOOT-INF/classes/filename.json
或者您也可以使用regex在
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:
。你能做到吗?用你需要的准确输出更新问题
jar:file:/my/project/directory/target/my-project-0.0.1.BUILD-SNAPSHOT.jar
/BOOT-INF/classes/filename.json