/***
     * 版本号比较
     * @param v1 版本号a
     * @param v2 版本号b
     * @return -1代表不是合格版本号;0代表一样大、1 代表版本号a大于版本号b、2代表版本号b大于版本号a
     */
    public static Integer versionCompare(String v1,String v2){
        Pattern pattern = Pattern.compile("\\d+(\\.\\d+)*");
        if(!(pattern.matcher(v1).matches()) || !(pattern.matcher(v2).matches())){
            //非合格版本号
            return -1;
        }
        String[] s1=v1.split("\\.");
        String[] s2=v2.split("\\.");

        //最小数组长度
        int length = s1.length < s2.length ? s1.length : s2.length;

        for (int i=0;i <length;i++){
            int diff = Integer.valueOf(s1[i]) - Integer.valueOf(s2[i]);
            if(diff == 0){
                continue;
            }else {
                // 1 参数a大于参数b 、2 参数a小于参数b
                return diff > 0 ? 1:2;
            }
        }

        //【特殊情况】
        String[] s3 = new String[]{};
        Integer ben = 0;
        Integer end = 0;
        Integer flag = 0;
        if(s1.length > s2.length){
            s3 = s1;
            ben = s2.length;
            end = s1.length;
            flag = 1;

        }
        if(s2.length > s1.length){
            s3 = s2;
            ben = s1.length;
            end = s2.length;
            flag = 2;
        }
        if(s3.length > 0){
            for (int j=ben;j <end;j++){
                int s3Val = Integer.valueOf(s3[j]);
                if(s3Val > 0){
                    return flag;
                }
            }
        }

        //一样大
        return 0;

    }

测试:

   System.out.println(ToolUtils.versionCompare("10.0.0","10.0.0"));//0
   System.out.println(ToolUtils.versionCompare("10.0.0","10.0.1"));//2
   System.out.println(ToolUtils.versionCompare("10.0.0","10.0"));//0
   System.out.println(ToolUtils.versionCompare("10.0.0","a.0"));//-1
   System.out.println(ToolUtils.versionCompare("9.6.0","9.0.61"));//1

版本号比较[versionCompare]的更多相关文章

  1. 版本号比较versioncompare方法,java实现

    测试

  2. versionCompare 版本号比较工具

    简介 需求非常简单,需要比较软件或app的版本号,判断大小,形如 0.10.2形式的版本号字符串.实现逻辑是按照点(.)分割字符串,然后逐级比较版本大小.不存在的按0处理,空字符串小于非空字符串. 测 ...

  3. js实现软件版本号的比较

    //js实现软件版本号的比较 //随机举两个例子 pc2.4.3 或者pc3.5.6 /** * 输入 v1,v2 * 返回true代表v1比v2的版本新,false则代表v1与v2相等或者v1< ...

  4. 版本号比较函数-js

    面试前,让做的一个版本号比较函数. <script type="text/javascript"> var v1=prompt("请输入第一个版本号" ...

  5. iOS之应用版本号的设置规则

    版本号的格式:v<主版本号>.<副版本号>.<发布号>  版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1.  产品的主体构件进 ...

  6. Open-Test 测试驱动模式与版本号管理机制

    以测试用例驱动项目开发,coding/case俩条线并走模式.   1.开发人员只负责功能实现:   2.测试人员提供自测用例,研发人员jenkins持续集成项目后自动化执行自测用例,通过后方可转测试 ...

  7. 学习笔记:Maven构造版本号的方法解决浏览器缓存问题

    需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...

  8. Gulp自动添加版本号

    推荐使用gulp-rev + gulp-rev-collector是比较方便的方法,结果如下: "/css/style.css" => "/dist/css/sty ...

  9. CentOS6.x生产环境下一键安装mono+jexus的脚本,自启动,带服务,版本号自控

    转自: http://linuxdot.net/bbsfile-3784 1.支持哪些个平台?答:暂时仅支持CentOS6.x平台,7.x未测试,欢迎测试并到群里反馈给我(昵称:无聊人士) 2.一键安 ...

随机推荐

  1. Thingworx SDK开发自定义Widget

    Thingworx自带的图表数量有限,样式也很有限,在echarts上看到了这样一个非常简单的图表,下面将做一个简单的静态引入示范 首先创建Thingworx项目 然后右键ui新建widget 自动生 ...

  2. jq——事件

    http://www.w3school.com.cn/jquery/jquery_ajax_intro.asp $(document),$(body) 加载事件: $(document).ready( ...

  3. 配置HTTPS加密的快速参考指南

    Nginx ssl_protocols TLSv1 TLSv1.1 TLSv1.2 阿帕奇 SSLProtocol All -SSLv2 -SSLv3 密码套房 选择密码套件可能很困难,它们的名称可能 ...

  4. ntp.log日志梳理

    [日志]offset 正负 机器A上执行: remote refid st t when poll reach delay offset jitter ======================== ...

  5. MBR和GPT分区学习

    1.MBR 早期的windows和linux都采用的MBR的方法来处理开机引导程序和分区表,对于linux的MBR分区来讲,0柱面0磁道1扇区用于引导驱动程序,第一扇区有512个字节,前446字节存放 ...

  6. 紫书 例题7-14 UVa 1602(搜索+STL+打表)

    这道题想了很久不知道怎么设置状态,怎么拓展,怎么判重, 最后看了这哥们的博客 终于明白了. https://blog.csdn.net/u014800748/article/details/47400 ...

  7. tcpdump的使用以及参数详解

    平时分析客户端和服务器网络交互的问题时,很多情况下需要在客户端和服务器抓包分析报文.一般win下抓包使用WireShark即可,但是linux下就需要用到tcpdump了,下面是一些对于tcpdump ...

  8. -bash: wget 未找到命令的解决办法

    在Linux操作系统中,我们会经常要用到wget下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性. 在linux中使用wget时,若报-bash: wget: comman ...

  9. Java基础学习总结(55)——java8新特性:stream

    java作为开发语言中的元老已经度过了很多年,最新的java8为我们带来了一些新特性,这些特性可以在以后的工作中为我们的开发提供更多的便捷,现在就让我们看看最新的函数式编程风格怎么在实际的开发中使用. ...

  10. [terry笔记]python FTP

    如下是作业,用python做一个ftp,主要利用socket. server端在linux下运行,在client端可以执行shell命令(静态的) 在client端输入get xxx,即可下载. 在c ...