常用版本号 如

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. SPOJ:Free tour II (树分治+启发式合并)

    After the success of 2nd anniversary (take a look at problem FTOUR for more details), this 3rd year, ...

  2. C#使用SendMessage发送组合键

    有时需要出发菜单功能,例如发送ALT + F打开应用程序的文件菜单,如何使用SendMessage实现呢? 使用用spy++截取的ALT+F的消息内容(如何使用spy++,请熟悉的高手指点下,我使用s ...

  3. ML一些零散记录

    朴素贝叶斯的假定条件:变量独立同分布 一般情况下,越复杂的系统,过拟合的可能性就越高,一般模型相对简单的话泛化能力会更好一点,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也 ...

  4. asp.net MVC 单选按钮的使用

    单选按钮的标准的html 语法 <form><input type="radio" name="sex" value="male&q ...

  5. 用Python在局域网根据IP地址查找计算机名

    1.要使用socket模块 代码如下: import sys, socket # hostname = socket.gethostname()# print("Host name:&quo ...

  6. leetCode :103. Binary Tree Zigzag Level Order Traversal (swift) 二叉树Z字形层次遍历

    // 103. Binary Tree Zigzag Level Order Traversal // https://leetcode.com/problems/binary-tree-zigzag ...

  7. E20180404-hm

    reject vt. 拒绝; 排斥; 抛弃,扔掉; 吐出或呕吐; conditioner  n. 调节器,调节装置 fabric n. 织物; 布; 构造; (建筑物的) 结构(如墙.地面.屋顶):质 ...

  8. Codeforces - 1081C - Colorful Bricks - 简单dp - 组合数学

    https://codeforces.com/problemset/problem/1081/C 这道题是不会的,我只会考虑 $k=0$ 和 $k=1$ 的情况. $k=0$ 就是全部同色, $k=1 ...

  9. hdu1856 More is better 基础并查集

    #include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> ...

  10. spring+redis 报错 org.springframework.core.serializer.support.DeserializingConverter.<init>(Ljava/lang/ClassLoader;)V

    这个问题的原因大概就是spring-data-redis.jar包版本不对 ,下面版本可以正常启动 <dependency> <groupId>org.springframew ...