• 版本号对比方案及参考代码(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 = 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;
    }
  • 相关阅读:
    【OS_Windows】用微pe制作启动盘安装操作系统
    技术列表
    RPC 的概念模型与实现解析
    asp.net站点阻止某个文件夹或者文件被浏览器访问
    常用插件
    安全相关
    asp.net mvc 请求处理流程,记录一下。
    接口的显示实现和隐式实现
    值类型与引用类型的简单测试,没有太多的理论,一目了然。
    IEnumerable、GetEnumerator、IEnumerator之间的关系。
  • 原文地址:https://www.cnblogs.com/n1ckyxu/p/7284484.html
Copyright © 2020-2023  润新知