当前位置:首页 > Java技术 > 版本号对比方案及参考代码(Objective-C,Java,JavaScript)

版本号对比方案及参考代码(Objective-C,Java,JavaScript)

2022年09月16日 14:54:55Java技术2

常用版本号 如

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 = 0; 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;
}

 

作者:老徐想减肥
来源链接:https://www.cnblogs.com/n1ckyxu/p/7284484.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/41976.html

标签: Java版本
分享给朋友:

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

java基础知识讲解(一)数据类型和运算符

java基础知识讲解(一)数据类型和运算符

Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。 Java中定义了3类8种基本数据类型 数值型- b...

Java 内存模型

Java 内存模型

📦 本文以及示例源码已归档在 javacore Java 内存模型(Java Memory Model),简称 JMM。 JVM 中试图定义一种 JMM 来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。...

在JAVA 中将堆与栈分开的原因

栈是运行时的单位,而堆是存储的单位。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么 放、放在哪儿。 注意:在Java中一个线程就会相应有一个线程栈与之对应 栈因为是运行单位,因此里面存储的信息都是跟...

Java获取明天的时间(当前时间加一天)

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;     public class&nbs...

Java开发手册精华总结

Java开发手册精华总结

阿里 Java 开发手册的思考总结 一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图,他的功底体现在所写的每一行代码上。 -- 毕玄 1. 命名风格 【书摘】类名用 UpperCamelCase 风格,比如 DO/BO/VO...

java总结文章

java总结文章

java总结文章 原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks Talk is cheap. Show me the...

深入浅出: Java回调机制(异步)

Writer      :BYSocket(泥沙砖瓦浆木匠) 什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道“就一个回调…”。此时千万个草泥马飞奔而过(逃 哈哈,看着源码,享受着这种回调在代码上的作用,...

java泛型通配符详解

java泛型通配符详解

前言 泛型带来的好处 泛型中通配符 常用的 T,E,K,V,? ?无界通配符 上界通配符 < ? extends E> 下界通配符 < ? super E>...

java如何防止反编译

java如何防止反编译

综述(写在前面的废话) Java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于有今天之风光!但随着java的应用领域越来越广,特别是一些功能要发布到终端用户手中(如Android开发的app),有时候,公司为了商业技术的保密考...

从 PHP 到 Java

最近主要编程语言从 PHP 转到了 Java,一个多月的经历对我很有意义,所以写文章记录一下经历,再分享一下最近学习 Java 的心得体会。 * { color: rgba(62, 62, 62, 1) } body { font-family: "Helvetica...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。