我不熟悉Java程序。 java Path比较和字符串能够完成下面列出的任务吗?
Path a = Paths.get("C:/Folder/");
Path b = Paths.get("C:/Folder/abc/def/");
是否有任何方法可以对两个路径进行比较并仅检索两个路径之间的差异。例如,如果我比较a
和b
,我可以检测/abc/def/
是两个路径的主要差异并将其存储到新变量中。我曾尝试在线搜索一些代码但不幸的是我得到的例子是确定路径相似性并仅返回结果yes
或not
答案 0 :(得分:1)
从Apache Common API使用StringUtils
到diff string
。
以下是文档中的一些示例:
StringUtils.difference("ab", "abxyz") = "xyz"
StringUtils.difference("abcde", "abxyz") = "xyz"
StringUtils.difference("abcde", "xyz") = "xyz"
从String
获取Path
,以及difference
:
String a = Paths.get("C:/Folder/").toString();
String b = Paths.get("C:/Folder/...").toString();
String diff = StringUtils.difference(a, b);
答案 1 :(得分:0)
一种方法是使用基本的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/
作为两条路径之间的差异。
答案 2 :(得分:0)
只需使用
a.relativize(b)
结果将是:“abc \ def \”
答案 3 :(得分:0)
您可以使用 org.apache.commons.lang.StringUtils 的以下 StringUtils.difference(字符串a,字符串b)。
Path a = Paths.get("C:/Folder/");
Path b = Paths.get("C:/Folder/abc/def/");
System.out.println(StringUtils.difference(a.toString(),b.toString());
答案 4 :(得分:0)
DotNet 5.0有解决方案!
说你有
string a = "C:/Folder/"
string b = "C:/Folder/abc/def/"
您可以使用
string relative = Path.GetRelativePath(a,b);
相对会
abc/def