標籤: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)