版本号比较[versionCompare]
/***
* 版本号比较
* @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]的更多相关文章
- 版本号比较versioncompare方法,java实现
测试
- versionCompare 版本号比较工具
简介 需求非常简单,需要比较软件或app的版本号,判断大小,形如 0.10.2形式的版本号字符串.实现逻辑是按照点(.)分割字符串,然后逐级比较版本大小.不存在的按0处理,空字符串小于非空字符串. 测 ...
- js实现软件版本号的比较
//js实现软件版本号的比较 //随机举两个例子 pc2.4.3 或者pc3.5.6 /** * 输入 v1,v2 * 返回true代表v1比v2的版本新,false则代表v1与v2相等或者v1< ...
- 版本号比较函数-js
面试前,让做的一个版本号比较函数. <script type="text/javascript"> var v1=prompt("请输入第一个版本号" ...
- iOS之应用版本号的设置规则
版本号的格式:v<主版本号>.<副版本号>.<发布号> 版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1. 产品的主体构件进 ...
- Open-Test 测试驱动模式与版本号管理机制
以测试用例驱动项目开发,coding/case俩条线并走模式. 1.开发人员只负责功能实现: 2.测试人员提供自测用例,研发人员jenkins持续集成项目后自动化执行自测用例,通过后方可转测试 ...
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...
- Gulp自动添加版本号
推荐使用gulp-rev + gulp-rev-collector是比较方便的方法,结果如下: "/css/style.css" => "/dist/css/sty ...
- CentOS6.x生产环境下一键安装mono+jexus的脚本,自启动,带服务,版本号自控
转自: http://linuxdot.net/bbsfile-3784 1.支持哪些个平台?答:暂时仅支持CentOS6.x平台,7.x未测试,欢迎测试并到群里反馈给我(昵称:无聊人士) 2.一键安 ...
随机推荐
- 卡片式大学综合英语词汇(Windows Phone 8.1 RT app)
简易卡片式记单词app.词库是原滋原味的大学综合英语词汇,包含语音,使用卡片式设计.离线词库,随时随地记单词. 商店:http://www.windowsphone.com/zh-cn/store/a ...
- nginx 日志配置不生效的问题
log_format 有个默认的日志格式: log_format combined '$remote_addr - $remote_user [$time_local] ' ' "$requ ...
- CGI与ISAPI的区别(转)
一 CGI原理及其性能 1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座 ...
- git指令总结及常见问题积累与解决方案
git指令总结及常见问题积累与解决方案 git初始化一个项目并且长传到服务器后端步骤: 1.本地文件操作 通过:git init初始化化一个项目 会出现一个隐藏文件 ,可以文件夹属性设置进行查看,此 ...
- [COCI2007]PRAVOKUTNI
题目大意:在一个平面上,有\(N\)个点,求这些点构成的直角三角形个数.解题思路:枚举直角顶点,对于每个点,将这个点当做原点,对其他点按极角排序,然后双指针扫一遍,判断弧度差即可. C++ Code: ...
- 使用python备份指定目录并删除备份超过一定时长的文件
#!/usr/bin/env python #-*- coding: utf-8 -*- """ @Project:Py @author: @Email: @Softwa ...
- 2.安装Cython
许多科学的Python发行版,例如Anaconda,Enthought Canopy和Sage,捆绑Cython并且不需要设置. 与大多数Python软件不同,Cython需要在系统上存在C编译器.获 ...
- plsql 中出现 Dynamic Performance Tables not accessible 问题解决
产生该提示原因: plsql dev在用户运行过程中,要收集用户统计信息,但是由于你现在登录的用户没有访问v$session,v$sesstat and v$statname视图的权限, 所以不能收集 ...
- VUE:模板语法(小白自学)
VUE:模板语法 一:何为声明式 安装规定的语法,去实现一些效果(不需要管流程). 二:模板语法 <!DOCTYPE html> <html> <head> < ...
- mybatis插入操作时,返回自增主键id
mapper.xml 代码 <insert id="insert" parameterType="com.Student" > <select ...