我不熟悉Java程序。java路径比较和字符串能够完成下面列出的任务吗?
Path a = Paths.get("C:/Folder/");
Path b = Paths.get("C:/Folder/abc/def/");
是否有任何方法可以对两条路径进行比较并仅检索两条路径之间的差异。例如,如果我比较a
和b
,我可以检测到/abc/def/
路径的主要区别,并将其存储到新变量中。我尝试在线搜索一些代码,但不幸的是,我得到的示例是确定路径相似性并仅返回结果yes
或not
>使用StringUtils
从Apache Common API到diff string
。
以下是文档中的一些示例:
StringUtils.difference("ab", "abxyz") = "xyz"
StringUtils.difference("abcde", "abxyz") = "xyz"
StringUtils.difference("abcde", "xyz") = "xyz"
从Path
获取String
,difference
:
String a = Paths.get("C:/Folder/").toString();
String b = Paths.get("C:/Folder/...").toString();
String diff = StringUtils.difference(a, b);
一种方法是使用基本的 Java 字符串方法来确定一条路径是否被另一条路径包含。 如果是这样,则采用包含路径的额外子字符串。 请考虑以下方法:
public String findPathDiff(String patha, String pathb) {
String diff = "";
if (pathb.contains(patha)) {
diff = pathb.substring(patha.length() - 1);
}
else if (patha.contains(pathb)) {
diff = patha.substring(pathb.length() - 1);
}
}
用法:
String patha = "C:/Folder/";
String pathb = "C:/Folder/abc/def/";
String diff = findPathDiff(patha, pathb);
System.out.println(diff)
这将输出/abc/def/
为两条路径之间的差异。
只需使用
a.relativize(b)
结果将是:"abc\def\"
您可以使用以下 org.apache.commons.lang.StringUtils 的 StringUtils.difference(String a , String b) 。
Path a = Paths.get("C:/Folder/");
Path b = Paths.get("C:/Folder/abc/def/");
System.out.println(StringUtils.difference(a.toString(),b.toString());