工具类代码
/**
* 比较【数字+小数点】类型的版本号大小
* <pre>
* 前者大,返回 1
* 后者大,返回 -1
* 相等,返回 0
* 不合法,返回 -2
* </pre>
*
* @param version1 版本号1
* @param version2 版本号2
* @return int
*/
public static int compareAppVersion(String version1, String version2) {
if (version1 == null || version2 == null) {
throw new RuntimeException("版本号不能为空");
}
version1 = version1.replaceAll("[^\\d.]", "");
version2 = version2.replaceAll("[^\\d.]", "");
int i = 0, j = 0;
int n = version1.length(), m = version2.length();
while (i < n || j < m) {
int a = 0;
for (; i < n && version1.charAt(i) != '.'; i++) {
a = a * 10 + version1.charAt(i) - '0';
}
i++;
int b = 0;
for (; j < m && version2.charAt(j) != '.'; j++) { b = b * 10 + version2.charAt(j) - '0'; } j++; if (a != b) { return a > b ? 1 : -1;
}
}
return 0;
}
}
示例
public static void main(String[] args) {
System.out.println(compareAppVersion("123.21", "ab123.ab21ab"));
System.out.println(compareAppVersion("123.223", "123.123"));
System.out.println(compareAppVersion("123.223.223", "123.123.1"));
System.out.println(compareAppVersion("123.223._223.223", "5.123.5"));
System.out.println(compareAppVersion("5.123.5", "_123.223.223.223"));
System.out.println(compareAppVersion("555", "123._223.223.223"));
System.out.println(compareAppVersion("123.223.223.223", "555"));
}