Java工具-版本号比较

更新于
4,029

工具类代码

/**
 * 比较【数字+小数点】类型的版本号大小
 * <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"));
}

 

我的会员
加入会员后,您将获得更多权益!
0 点赞
0 收藏
分享
0 讨论
反馈