常用版本号 如

2.0.1 与 2.0.2 相比  2.0.2是比2.0.1要新的

那么该如何对这个版本号进行对比

这里有一个比较简单的实现方案

2.0.1 这种格式可以拆分为多个部分

如这里的2是大版本号,0是子版本号,1是修复版本号

那么我们可以将2.0.1拆分为N部分

拆分N部分后 ,可以通过遍历来做对比

直接上代码

OC:

判断aVersion是否大于bVersion
例子 :
A.
NSString *aVersion = @"2.4.2";
NSString *bVersion = @"2.3.5";
[self compareVersion:aVersion biggerThan:bVersion] 为true B.
NSString *aVersion = @"2.3.5";
NSString *bVersion = @"2.3.5";
[self compareVersion:aVersion biggerThan:bVersion] 为false C.
NSString *aVersion = @"0.13.5";
NSString *bVersion = @"2.3.5";
[self compareVersion:aVersion biggerThan:bVersion] 为false D.判断A版本号 不小于 B版本号
NSString *aVersion = @"2.0.0";
NSString *bVersion = @"2.3.5"; //为当前版本号
(![self compareVersion:aVersion biggerThan:bVersion]) 为true + (BOOL)compareVersion:(NSString *)aVersion biggerThan:(NSString *)bVersion{
NSArray<NSString *> *aArray = [aVersion componentsSeparatedByString:@"."];
NSArray<NSString *> *bArray = [bVersion componentsSeparatedByString:@"."];
NSUInteger loopCount = MIN(aArray.count,bArray.count);
for (int i = ; i < loopCount; i++) {
if (aArray[i].integerValue > bArray[i].integerValue){
return YES;
}else if (aArray[i].integerValue < bArray[i].integerValue){
return NO;
}
}
return aArray.count > bArray.count;
}

JAVA:

判断aVersion是否大于bVersion
例子 :
A.
String aVersion = @"2.4.2";
String bVersion = @"2.3.5";
compareAppVersion(aVersion,bVersion) ;//为true B.
String aVersion = @"2.3.5";
String bVersion = @"2.3.5";
compareAppVersion(aVersion,bVersion) ;//false C.
String aVersion = @"0.13.5";
String bVersion = @"2.3.5";
compareAppVersion(aVersion,bVersion) ;//false D.判断A版本号 不小于 B版本号
String aVersion = @"2.0.0";
String bVersion = @"2.3.5"; //为当前版本号
(!compareAppVersion(aVersion,bVersion)) 为true protected boolean compareAppVersion(String aVersion,String bVersion){
String a = (aVersion != null ? aVersion : "");
String b = (bVersion != null ? bVersion : "");
List<String> aStringArray = Arrays.asList(a.split("\\."));
List<String> bStringArray = Arrays.asList(b.split("\\."));
int loopCount = Math.min(aStringArray.size(), bStringArray.size());
for (int i = 0; i < loopCount; i++){
try{
if (Integer.parseInt(aStringArray.get(i)) > Integer.parseInt(bStringArray.get(i))){
return true;
}
else if (Integer.parseInt(aStringArray.get(i)) < Integer.parseInt(bStringArray.get(i))){
return false;
}
}
catch (Exception e) {
//logger.warn("compareAppVersion版本比较错误"+e.getMessage());
// TODO: handle exception
}
}
return aStringArray.size() > bStringArray.size();
}

JavaScript

----- JavaScript ------
判断方式请参考Java
function compareVersion(aVersion,bVersion){
var a = (aVersion != null ? aVersion : "");
var b = (bVersion != null ? bVersion : "");
var aStringArray = a.split(".");
var bStringArray = b.split(".");
var loopCount = Math.min(aStringArray.length, bStringArray.length);
for (var i = 0; i < loopCount; i++){
if (parseInt(aStringArray[i]) > parseInt(bStringArray[i])){
return true;
}
else if (parseInt(aStringArray[i]) < parseInt(bStringArray[i])){
return false;
}
}
return aStringArray.length > bStringArray.length;
}

版本号对比方案及参考代码(Objective-C,Java,JavaScript)的更多相关文章

  1. js页面跳转参考代码大全

    整理一下JS页面跳转参考代码 第一种:     <script language=/"javascript/" type=/"text/javascript/&qu ...

  2. Java阶段性测试--第四五六大题参考代码

    第四题:.此题要求用IO流完成 使用File类在D盘下创建目录myFiles, 并在myFiles目录下创建三个文件分别为:info1.txt, info2.txt, info3.txt . 代码: ...

  3. SqlBulkCopy快速插入datatable到数据库中参考代码,以及要注意的问题

    参考代码如下: public class Examination { #region 批量插入一个sheet的专业对应的学科 /// <summary> /// 批量插入一个sheet的专 ...

  4. Notepad++如何对比文件 Notepad++对比两个文件代码方法

    大家在使用Notepad++的时候,需要对编辑的两个文件进行比较,找出两个文件代码的区别,快速进行编辑修改,那么Notepad++如何对比文件,下面小编就给大家带来Notepad++对比两个文件代码方 ...

  5. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  6. [Java基础]代码块及java反编译

    块的作用域:   块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...

  7. 从一行代码里面学点JavaScript

    从一行代码里面学点JavaScript 现如今,JavaScript无处不在,因此关于JavaScript的新知识也是层出不穷.JavaScript的特点在于,要学习它的语法入门简简单,但是要精通使用 ...

  8. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)

    编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...

  9. 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]http ...

随机推荐

  1. codeforces round 422 div2 补题 CF 822 A-F

    A I'm bored with life 水题 #include<bits/stdc++.h> using namespace std; typedef long long int LL ...

  2. poj1830开关问题——异或高斯消元

    题目:http://poj.org/problem?id=1830 根据题意,构造出n元方程组: a(1,1)x1 ^ a(1,2)x2 ^ a(1,3)x3 ... a(1,n)xn = st1 ^ ...

  3. Struts2中的FilterDispatcher和StrutsPrepareAndExecuteFilter的区别

    1.转自:https://blog.csdn.net/zwx521515/article/details/79300453 在Struts2开发中,很多人问到,声明过滤器的时候,为什么有的时候用&qu ...

  4. Table View Programming Guide for iOS---(三)----Overview of the Table View API

    Overview of the Table View API 表格视图API概述 The table view programming interface includes several UIKit ...

  5. 009--test命令和grep作业及Sed作业awk作业和循环结构

    一.test命令 -d :目录                                test  -d  /boot -s :文件长度 > 0.非空            test  - ...

  6. 折半插入排序 之通俗易懂,图文+代码详解-java编程

    转自http://blog.csdn.net/nzfxx/article/details/51615439 1.特点及概念介绍 下面给大家讲解一下"二分法查找"这个java基础查找 ...

  7. 设置socket IP_TOS选项 (转载)

    转自:http://zhangjunxin520.blog.163.com/blog/static/305037032011721102857609/ 在IP头中,有一Type-of-Service字 ...

  8. JAVA基础--JAVA API常见对象(字符串&缓冲区)11

    一. String 类型 1. String类引入 第二天学习过Java中的常量:   常量的分类:   数值型常量:整数,小数(浮点数) 字符型常量:使用单引号引用的数据 字符串常量:使用双引号引用 ...

  9. 关于 GraPhlAn 的孤独自学

    最近需要用 GraPhlan 来绘制 taxo分类图,稍微研究了一下 一.简介 官网: http://huttenhower.sph.harvard.edu/GraPhlAn 主要有两个脚本: gra ...

  10. bzoj 5498: [2019省队联测]皮配【dp】

    是个神仙dp-- 参考:https://www.luogu.org/blog/xzz-233/solution-p5289 设f[i][j][k]是前i个有限制的城市,所有学校中选蓝色阵营有j人,有限 ...