in odps-console-basic/src/main/java/com/aliyun/openservices/odps/console/utils/ODPSConsoleUtils.java [442:478]
public static int compareVersion(String left, String right) {
if (left.equals(right)) {
return 0;
}
String pattern = "[\\\\.\\\\_\\\\-]";
String[] leftArray = left.split(pattern);
String[] rightArray = right.split(pattern);
int length = leftArray.length < rightArray.length ? leftArray.length : rightArray.length;
for (int i = 0; i < length; i++) {
if (rightArray[i].equalsIgnoreCase(leftArray[i])) {
continue;
}
if (org.apache.commons.lang.StringUtils.isNumeric(rightArray[i])
&& org.apache.commons.lang.StringUtils.isNumeric(leftArray[i])) {
if (Integer.parseInt(rightArray[i]) > Integer.parseInt(leftArray[i])) {
return -1;
} else if (Integer.parseInt(rightArray[i]) < Integer.parseInt(leftArray[i])) {
return 1;
}
} else {
int res = leftArray[i].compareToIgnoreCase(rightArray[i]);
return res > 0 ? 1 : res;
}
// 相等 比较下一组值
}
if (leftArray.length == rightArray.length) {
return 0;
} else {
return leftArray.length < rightArray.length ? -1 : 1;
}
}