首页 > 解决方案 > 如何在java中释放查询间隔

问题描述

我有两个发布版本号。例如:旧版本= 1.1.0 新版本= 3.3.4

我想创建查询以获取 oldVersion 和 newVersion 之间的其他版本号,例如 1.2.1 或 1.2.5 或 1.2.5.1 或 1.3.0 但除了 3.3.5 这些版本号必须作为其他版本号返回(1.2 .1 | 1.2.5 | 1.3.0 | 1.2.5.1 | 3.0)

因为这些版本号包括包含 oldVersion 和 newVersion 的范围

例如:

旧版本= 1.1.0 新版本= 3.3.4

    1.1.0<1.2.1<3.3.4 format =(Major| Minor|Revision)

    1.1.0<1.2.5<3.3.4 format =(Major| Minor|Revision)

    1.1.0<1.2.5.1<3.3.4 format =(Major| Minor|Revision|Build Number)

    1.1.0<3.0<3.3.4 format =(Major|Minor)

例如:

旧版本= 1.1.0 新版本= 3.2

    1.1.0<1.2.1<3.2 format =(Major| Minor|Revision)

    1.1.0<2.0<3.2 format =(Major| Minor|Revision)

    1.1.0<1.2.5.1<3.2 format =(Major| Minor|Revision|Build Number)

    1.1.0<3.0<3.2 format =(Major|Minor)

如何使用 Java 编程语言中的方法将版本号视为字符串类型。

特别是这种方法必须支持所有发布版本格式,因为与数字无关

标签: javaalgorithmreleaseintervals

解决方案


如果您的字符串版本并不总是三倍数格式(它们可能是“xy”或“xyztuv ...”),那么获取其中的每个部分并进行相对比较。

boolean isGreater(String v1, String v2){
   int[]numbers1 = getNumbers(v1);
   int[]numbers2 = getNumbers(v2);
   for(int i=0;i<numbers1.length()&&i<numbers2.length();i++){
      if(numbers1[i]>numbers2[i]) return true; //v1 > v2
      if(numbers1[i]<numbers2[i]) return false; //v1 < v2
   }
   if(numbers1.length()==numbers2.length()) return false; they're same
   return numbers1.length()>numbers2.length();
}

函数是什么getNumbers(),我想你可以自己写,只用for循环,得到所有用点分隔的数字。


推荐阅读