我有这个代码示例。我想比较包含路径的字符串。问题出在其他部分......在这个例子中,他们有/和usr在一起..我想比较那些不同之后的长度..谢谢你的帮助
String path1 = "/usr/libexec/warmd";
String path2 = "/usr/lib/libOpen/xy";
String[] test1 = path1.split("/");
String[] test2 = path2.split("/");
ArrayList<String[]> path1array = new ArrayList<String[]>();
ArrayList<String[]> path2array = new ArrayList<String[]>();
path1array.add(test1);
path2array.add(test2);
int len1 = test1.length;
int len2 = test2.length;
int len;
if (len1 <= len2) {
len = len1;
} else
len = len2;
for (int i = 0; i < len; i++) {
if ((test1[i]).equals(test2[i])) {
continue;
} else
break;
}
答案 0 :(得分:0)
对于纯String
操纵,忘记File
个对象,您可以使用replaceFirst
或substring
和indexOf
的组合来摆脱“ / usr /“在您的路径中Strings
。
以下是一个例子:
// the input paths
String path1 = "/usr/libexec/warmd";
String path2 = "/usr/lib/libOpen/xy";
// gets "/usr/" in path1 and initializes a portion of path1 starting after
// the length of "/usr/"
String comparablePath1 = path1.substring(path1.indexOf("/usr/") + "/usr/".length());
// replaces the first instance of literal (in this case) pattern "/usr/" in path1
String trimmedPath1 = path1.replaceFirst("/usr/", "");
System.out.println(comparablePath1);
System.out.println(trimmedPath1);
String comparablePath2 = path2.substring(path1.indexOf("/usr/") + "/usr/".length());
String trimmedPath2 = path2.replaceFirst("/usr/", "");
System.out.println(comparablePath2);
System.out.println(trimmedPath2);
// compares "comparable" paths
if (comparablePath1.length() > comparablePath2.length()) {
System.out.println("1st path is longer");
}
else if (comparablePath2.length() > comparablePath1.length()) {
System.out.println("2nd path is longer");
}
else {
System.out.println("1st and 2nd paths are equal in length");
}
输出:
libexec/warmd
libexec/warmd
lib/libOpen/xy
lib/libOpen/xy
2nd path is longer
答案 1 :(得分:0)
您可以按如下方式找到公共前缀子字符串:
int minLen = Math.min(test1.length, test2.length);
String commonPrefix = "";
for (int i = 0; i < minLen; i++) {
if (test1[i].compareTo(test2[i]) == 0) {
commonPrefix += test1[i]+"/";
} else {
break;
}
}
如果您不喜欢字符串赋值,请使用StringBuffer instaed。现在获取路径:
String path1unique = path1.replaceFirst(commonPrefix, "");
String path2unique = path2.replaceFirst(commonPrefix, "");