高分悬赏:Java语言怎么将两个绝对路径中相同的部分提取出来,得到共同的绝对路径
这个可以用字符串的比较活着正则表达式哦
public static void main(String[] args) throws IOException {
String path1 = "D:\\\\var\\usr\\local\\file1.txt";
String path2 = "/var/usr/local/file2.conf";
String[] path1Arr = splitPath2List(path1);
String[] path2Arr = splitPath2List(path2);
List<String> comPathList = new ArrayList<>();
for (int i=0; i<path1Arr.length; i++) {
if (StringUtils.isEmpty(path1Arr[i])) {
continue;
}
StringBuilder comPath = new StringBuilder();
for (int j=0; j<path2Arr.length; j++) {
if (path1Arr[i].equals(path2Arr[j])) {
comPath.append(path1Arr[i]);
comPath.append(File.separator);
i++;
}
}
if (comPath.length() > 0) {
comPathList.add(comPath.toString().substring(0, comPath.length()-1));
}
}
System.out.println(comPathList);
}
private static String[] splitPath2List(String filePath) {
if (filePath.indexOf('\\') > -1) {
return filePath.split("\\\\");
} else if (filePath.indexOf('/') > -1){
return filePath.split("/");
} else {
return null;
}
}
绝对路径都是从盘符开始的,直接把两个字符串的字符一个一个按顺序截出来,对比就是了
string path1 = "c:\sdfa\fads\er";
string path2 = "c:\sdfa\fa\";
//取较字符串的长度用以遍历
int length = path1.length() > path2.length() ? path2.length() : path1.length();
//存储相同的字符
string result = "";
for(int i = 0; i < length; i ++){
string str1 = path1.subString(i,i+1);
string str2 = path2.subString(i,i+1);
if(str1.equals(str2){ //如果相同就加起来,然后继续,否则退出
result += "str1";
continue;
}
break;
}
//将路径截取至最后一个分隔符即可
result = result.subString(0,resultlastIndexOf("\"));