Java 如何从SpringCloud的URL中提取jar中的jar名称和文件名?
最近,我在玩春云。我想从URL中提取jar中的jar名称和文件名 例如,我有一个URL: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 及 请注意,没有。我怎样才能做到这
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