版本号对比方案及参考代码(Objective-C,Java,JavaScript)
常用版本号 如
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)的更多相关文章
- js页面跳转参考代码大全
整理一下JS页面跳转参考代码 第一种: <script language=/"javascript/" type=/"text/javascript/&qu ...
- Java阶段性测试--第四五六大题参考代码
第四题:.此题要求用IO流完成 使用File类在D盘下创建目录myFiles, 并在myFiles目录下创建三个文件分别为:info1.txt, info2.txt, info3.txt . 代码: ...
- SqlBulkCopy快速插入datatable到数据库中参考代码,以及要注意的问题
参考代码如下: public class Examination { #region 批量插入一个sheet的专业对应的学科 /// <summary> /// 批量插入一个sheet的专 ...
- Notepad++如何对比文件 Notepad++对比两个文件代码方法
大家在使用Notepad++的时候,需要对编辑的两个文件进行比较,找出两个文件代码的区别,快速进行编辑修改,那么Notepad++如何对比文件,下面小编就给大家带来Notepad++对比两个文件代码方 ...
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- [Java基础]代码块及java反编译
块的作用域: 块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...
- 从一行代码里面学点JavaScript
从一行代码里面学点JavaScript 现如今,JavaScript无处不在,因此关于JavaScript的新知识也是层出不穷.JavaScript的特点在于,要学习它的语法入门简简单,但是要精通使用 ...
- 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)
编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...
- 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]http ...
随机推荐
- ES6之Object
对象属性模型的相关方法: 对象自身所有属性名称 Object.getOwnPropertyNames(obj) //[] 获取某个属性的attribute对象 Object. ...
- Open multiple excel files in WebBrowser, only the last one gets activated
http://stackoverflow.com/questions/20578053/open-multiple-excel-files-in-webbrowser-only-the-last-on ...
- Code:NLog
ylbtech-Code:NLog 1. NLog介绍使用返回顶部 1. NLog是什么 NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码.NLog ...
- C++初学(1) 简单的加减乘除取余运算代码
//---------------+-*/%算法---------------------------------------------------------- #include <iost ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时10
课时10 神经网络训练细节part1(上) 没有大量的数据也不会有太多影响,只需要找一个经过预训练的卷积神经网络然后进行调整 从数据集中抽样一小批数据, 将数据运入卷积神经网络中来计算损失值 通过反向 ...
- 标准WPS框架下的空间信息处理服务部署方法
笔者第一篇博客里面曾介绍过将专题图制作功能发布为WPS,但随着后面的研究,才发现那时候发布的不是真正WPS框架下的服务,而只是通过Servlet将其发布为可调用的网络服务,所以今天再具体介绍一下真正的 ...
- (水题)洛谷 - P1553 - 数字反转(升级版) - 字符串格式转换
https://www.luogu.org/problemnew/show/P1553 忘记给整数加上前导零去除的代码了.其实不去也可以,额外的进位用一个carry另外存起来就好. #include& ...
- 纯拓扑排序一搞poj2367
/* author: keyboarder time : 2016-05-18 12:21:26 */ #include<cstdio> #include<string.h> ...
- Cg(c for graphic)语言的数据类(转)
抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 本章将着重介绍Cg语言中预定义的内置(bu ...
- bzoj 3704: 昊昊的机油之GRST【贪心+脑洞】
脑洞题大概 首先处理出每个位置需要操作的次数c,假设第一次达到目标就不能再走,这样的操作次数是c差分后值的正数和,就想成分治每一段然后同减最小值然后从0处断开 然后考虑能一圈一圈走的情况,连续一段多走 ...