1. 程式人生 > >版本號對比方案及參考程式碼(Objective-C,Java,JavaScript)

版本號對比方案及參考程式碼(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;
}

相關推薦

版本對比方案參考程式碼(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部分後 ,可以通過遍歷來做對

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

true eap bstr math 當前 function loop sse 版本號 常用版本號 如 2.0.1 與 2.0.2 相比 2.0.2是比2.0.1要新的 那麽該如何對這個版本號進行對比 這裏有一個比較簡單的實現方案 2.0.1 這種格式可以拆分為多個部分

gulp自動化壓縮合並、加版本解決方案

nal efi fun 完成 文件添加 pda ndb fault index 雖然網上有很多的 gulp 構建文章,但是很多都已經隨著 gulp 插件的更新無法運行了。因此,我寫了這個比較簡單的構建方案。 如果還不熟悉 gulp 的插件,可以閱讀上一篇文章:精通gu

查看Eclipse版本的方法各個版本區別 Eclipse選擇標準

當前 ane https nbsp develop ava 大小 emp 技術 這篇文章主要介紹了查看Eclipse版本號的方法及各個版本區別 Eclipse選擇標準,方便初學者選擇適合自己的版本,需要的朋友可以參考下 Eclipse 是一個開放源代碼的、基於Java的可

Android-PullToRefresh下拉重新整理步驟參考程式碼

Android-PullToRefresh下拉重新整理步驟 1 匯入第三方外掛庫 Android-PullToRefresh-master.zip 2 在佈局檔案中使用第三方外掛 com.handmark.pulltorefresh.library.PullTo

maven-replacer-plugin 靜態資源版本解決方案(css/js等)

本文介紹如何使用 maven 的 com.google.code.maven-replacer-plugin 外掛來自動新增版本號,防止瀏覽器快取。 目錄 1.解決方案 2.原始檔案和最終生成效果 3.pom.xml 中外掛新增 4.html中 css/js 檔案引用規則 5.結語 1.解決方案 解

C++ 軟體版本對比

在軟體更新時,需要根據版本號來決定是否需要自動更新,所以就涉及到版本號的對比了。 下面給出的是使用string的compare函式進行版本號判斷的程式碼: #include "stdafx.h" #

前端開發靜態檔案自動新增版本解決方案

前端開發中不可避免的會遇到快取問題,那麼如何使給這些靜態自動給新增版本號使修改後的內容立即生效呢?下面講下我找到的兩種方法: 一、通過獲取檔案最後修改時間 原理:通過伺服器端語言讀取檔案最後一次修改修改時間,然後將獲取的時間作為版本號。 以php為例: <?p

VS中實時獲取SVN的版本並寫入到AssemblyInfo.cs中(C#)

art csharp style eve avi exec format sharp 匹配 原文:VS中實時獲取SVN的版本號並寫入到AssemblyInfo.cs中(C#)

ios objective-c java php des加解密統一

轉來的–>原文地址 用到裡面的iOS和java是OK的。 java: import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.

一段判斷多種瀏覽器型別版本的指令碼程式碼

摘自 jsframework 框架: window["MzBrowser"]={};(function(){  if(MzBrowser.platform) return;  var ua = window.navigator.userAgent;  MzBrowser.pl

vsftpd 編譯安裝 隱藏版本

str 本地服務 沒有 版本號 取數據 賦值 其他 映射 自動啟動 環境:Redhat Enterprise Linux AS 4.0 update2(i386) 不提示,均表示以root權限執行。 [註:]//為註釋符,如“// 建立MySQL組”,即為一句註釋。 我

fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞 最終解決方案VS10.12CLR選擇NET版本

mic c++ vs2008 soft globals oba target vs編譯 編譯 安裝多個VS 出現這個問題 fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞 。 VS2010和VS2012或者sv2008和VS2010,高

WheelView實現省市區三級聯動(數據庫實現版本附帶完整SQL數據)

tdi delet avi ipp cte public lis 網上 count() 近期在實現收貨地址功能。用到了省市區三級聯動效果。網上找到一般都是xml或json,數據源陳舊改動麻煩,改動了一下使用數據庫方式實現了一下 數據源解決,因為數據量

Android 在Android手機上獲取其他應用的包名版本

string android手機 app名 fin 產品 logo 信息 led 直接 獲取Android手機上其他應用的包名及版本號方法有很多,可以通過AAPT從APK包中直接獲取,也可以通過代碼在手機上獲取。顯然,對於產品或者用戶來說要獲取這些信息,在手機上獲取更為簡便

三、mysql登錄詳解版本查詢

ppa l數據庫 server gpo 方法 win sql查詢 spa nbsp 1.用window+r,輸入cmd,用mysql -uuser -ppassword登錄時出現‘mysql’不是有效的內部命令? 答:這是因為沒有配置My

用python給html裏的cssjs文件鏈接自動添加版本

odin link 鏈接 寫入 dir bsp gulp () pan 傳統的給文件鏈接添加版本號的方法是使用gulp-rev,這裏提出的解決方案是使用python來替代gulp-rev。 import os import re import uuid impor

js判斷是否是app,版本

== urn regex con eve i++ etc str while 判斷是否是android,ios,qq,wetchat export const Config = {}; Config.ua = navigator.userAgent.toLowerCa

java使用apk-parser解析apk,獲取manifest中的版本自定義變數

apk-parser地址: https://github.com/hsiafan/apk-parser 1.獲取版本號等資訊: try (ApkFile apkFile = new ApkFile(new File(filePath))) { ApkMeta apkMeta

Android SDK目錄版本區別

今天又有人問Tools,Build-Tools,Platform-tools有什麼區別,是幹嘛的? 現在對SDK目錄做一下總結闡述! SDK目錄 add-ones add-ones:裡面儲存著一些附加的庫,第三方公司為Android平臺開發的附加功能系統。比如GoogleMaps 。(一