常用版本号 如

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. Ubuntu:Could not get lock /var/lib/dpkg/lock

    在ubuntu上使用apt-get时,碰过如下问题: 看意思是上一次使用apt-get时异常退出了,锁住了,google了下解决方案如下: 1.先判断是否有apt-get进程在跑,同一时刻只能有一个a ...

  2. 频繁GC会造成卡顿

    频繁GC会造成卡顿 https://www.cnblogs.com/qcloud1001/p/9525078.html 一款app除了要有令人惊叹的功能和令人发指交互之外,在性能上也应该追求丝滑的要求 ...

  3. spring配置mongodb连接副本集多个节点

    mongodb版本3.4.x 1.配置副本集 先配置副本集,可参考我之前写的文章:http://blog.csdn.net/fuck487/article/details/78287362 注意:必须 ...

  4. HNOI2017 day1 T2 影魔

    题目大意: 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄. 每一个灵魂,都有着 ...

  5. auto_ptr智能指针

    C++的auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理. 使用std::auto_ptr,要#include <memory>.

  6. ORACLE PL/SQL 实例精解之第七章 迭代控制之二

    7.1CONTINUE语句 CONTINUE语句会导致循环终止当前迭代.并且当CONTINUE的条件为TRUE时,开始执行该循环的下一次迭代.需要借助于IF语句来计算COUNTINUE条件.当CONT ...

  7. Epoll简介以及例子

    第一部分:Epoll简介 问题 :  Select,Poll和Epoll的区别 答案 : Epoll和Select的区别 1. 遍历方式的区别.select判断是否有事件发生是遍历的,而epoll是事 ...

  8. 51nod 1267【二分】

    思路: 首先我们能够很容易地想到,4个数的和,拆成两两相加:a+b=-c-d; 我们也能很轻松地求出两两之和,但是呢..不同的和会存在相同的值相加,所以还要排除这个条件.具体操作就是标记一下,然后将和 ...

  9. Codeforces703B Mishka and trip

    题意: 就是有n个点,本来相邻点之间就有一条边,1和n之间也有一条,然后给你几个特殊点,说这些特殊点和其他所有点都连起来了,然后算一个所有边的权值和,每条边的权值等于两个点的c相乘. 思路: 水题啊- ...

  10. hdu1856 More is better 基础并查集

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