软件版本号比较 java工具类

Posted allen-win

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件版本号比较 java工具类相关的知识,希望对你有一定的参考价值。

这段程序主要用于比较sdk的版本号,例如 8.9.1 和8.9.0,8.9.1和8.7的比较。

 

import org.apache.commons.lang3.StringUtils;

import java.util.regex.Pattern;

public class NumUtils {

   /**
     * @description 比较SDK版本号
     * @param version1
     * @param version2
     * @return
     */
    public static int compareVersion(String version1, String version2){
        if (version1 == null || version2 == null) {
        }
        version1 = version1.replaceAll("([^(\d|\.)])", "");
        version2 = version2.replaceAll("([^(\d|\.)])", "");
        String[] versionArray1 = version1.split("\.");//注意此处为正则匹配, 不能用.;
        String[] versionArray2 = version2.split("\.");
        int idx = 0;
        int minLength = Math.min(versionArray1.length, versionArray2.length);//取最小长度值
        int diff = 0;
        while (idx < minLength
                && (diff = versionArray1[idx].length() - versionArray2[idx].length()) == 0//先比较长度
                && (diff = versionArray1[idx].compareTo(versionArray2[idx])) == 0) {//再比较字符
            ++idx;
        }
        //如果已经分出大小,则直接返回,如果未分出大小,则再比较位数,有子版本的为大;
        diff = (diff != 0) ? diff : versionArray1.length - versionArray2.length;
        return diff;
    }
    public static void main(String[] args) {  
     System.out.println(compareVersion("6.0.0".replaceAll("([^(\d|\.)])", ""), "6.0.0") ==0);  //true
System.out.println(compareVersion("5.6.1".replaceAll("([^(\d|\.)])", ""), "5.6.0") > 0); //true
System.out.println(compareVersion("5.6.1".replaceAll("([^(\d|\.)])", ""), "5.6.2") > 0); //false
 } }

 

以上是关于软件版本号比较 java工具类的主要内容,如果未能解决你的问题,请参考以下文章

通过 Java 正则表达式提取 semver 版本字符串的片段

elasticsearch代码片段,及工具类SearchEsUtil.java

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

5类开发者须知的工具

vb如何读取系统已安装软件并获取软件版本号