版本號碼對比方案及參考代碼(Objective-C,Java,JavaScript)

來源:互聯網
上載者:User

標籤:i++   判斷   nbsp   lis   pre   通過   sse   java   string   

常用版本號碼 如

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] 為trueB.NSString *aVersion = @"2.3.5";NSString *bVersion = @"2.3.5";[self compareVersion:aVersion biggerThan:bVersion] 為falseC.NSString *aVersion = @"0.13.5";NSString *bVersion = @"2.3.5";[self compareVersion:aVersion biggerThan:bVersion] 為falseD.判斷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) ;//為trueB.String aVersion = @"2.3.5";String bVersion = @"2.3.5";compareAppVersion(aVersion,bVersion) ;//falseC.String aVersion = @"0.13.5";String bVersion = @"2.3.5";compareAppVersion(aVersion,bVersion) ;//falseD.判斷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 ------判斷方式請參考Javafunction 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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.