廢話不多說,直接上代碼
1 /** 2 * 判斷是否為最新版本方法 將版本號根據.切分為int數組 比較 3 * 4 * @param localVersion 本地版本號 5 * @param onlineVersion 線上版本號 6 * @return 是否為新版本 7 * @throws IllegalArgumentException argument may not be null ! 8 */ 9 public static boolean isNewVersion(String localVersion, String onlineVersion) { 10 if (localVersion == null || onlineVersion == null) { 11 throw new IllegalArgumentException("argument may not be null !"); 12 } 13 if (localVersion.equals(onlineVersion)) { 14 return false; 15 } 16 //過濾非數字和非字符點 17 String[] localArray = localVersion.replaceAll("[^0-9.]", "").split("[.]"); 18 String[] onlineArray = onlineVersion.replaceAll("[^0-9.]", "").split("[.]"); 19 int length = localArray.length < onlineArray.length ? localArray.length : onlineArray.length;//取長度較短的版本 20 //以長度較短的版本為基點,逐個判斷大小 21 for (int i = 0; i < length; i++) { 22 if (Integer.parseInt(onlineArray[i]) > Integer.parseInt(localArray[i])) { 23 return true; 24 } else if (Integer.parseInt(onlineArray[i]) < Integer.parseInt(localArray[i])) { 25 return false; 26 } 27 // 相等 比較下一組值 28 } 29 //長度較長的判斷 30 //比較最后差異組數值 31 if (localArray.length < onlineArray.length) {//舊版本長度短於新版本 32 return Integer.parseInt(onlineArray[onlineArray.length - 1]) > 0; 33 } else if (localArray.length > onlineArray.length) {//舊版本長度長於新版本 34 return Integer.parseInt(onlineArray[onlineArray.length - 1]) < 0;//舊版本 35 } 36 return false; 37 }