您的位置:首页 > 其它

版本号的比较函数

2015-10-10 09:23 176 查看
网上搜索了下,没发现太好的实现,于是自己实现了。
原理就是按点号切割字符串后从前往后转换成数字进行比较,所以 2.11.3 > 2.6.2
(如果直接比较字符串,结果是错误的) 。
可以支持不同长度的版本号比较, 1.2.3 > 1.2。
不支持带数字的版本号进行比较,比如 1.2.3a vs
1.2.3b,会直接异常( Integer.valueOf
方法扔异常)。如果有此需求应该自己实现版本比较函数。

    public static int
compare(String version1, String version2) {
     
  String[] subVersions1 =
version1.trim().split("\\.");
     
  String[] subVersions2 =
version2.trim().split("\\.");
     
  int compareLength =
Math.min(subVersions1.length, subVersions2.length);
     
  for (int i = 0; i < compareLength; i++)
{
     
      int
subVersion1 = Integer.valueOf(subVersions1[i]);
     
      int
subVersion2 = Integer.valueOf(subVersions2[i]);
     
      if
(subVersion1 < subVersion2) {
     
     
    return -1;
     
      } else if
(subVersion1 > subVersion2) {
     
     
    return 1;
     
      }
     
  }
     
  if (subVersions1.length == subVersions2.length)
{
     
      return
0;
     
  } else {
     
      return
(subVersions1.length < subVersions2.length ? -1 : 1);
     
  }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: