如何在 java 中发布查询间隔

How can do release query interval in 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 编程语言中的方法,将版本号视为 String 类型。

特别是这个方法必须支持所有发布版本格式独立于数字

假设您的版本字符串始终采用 "x.y.z" 格式(没有 space,除了点和数字之外没有其他特殊字符)。 编写一个函数来获取版本的相对值,如下所示:

int valueOfVersion(String version){
   String numberStr = "";
   int numberInt = 0;
   for(int i=0;i<version.length();i++){
      if(version.charAt(i)=='.'){
         numberStr = "";
         numberInt*10+Integer.parseInt(numberStr);
      }
      else{
         numberStr+=Character.toString(version.charAt(i));
      }
   }
   numberInt*10+Integer.parseInt(numberStr); //process the last part of version
   return numberInt;
}

一旦你有了一个版本的值,你就可以用这个值来比较这个版本和另一个版本,值越大,版本就越大。剩下的对你来说很简单,希望对你有用!

如果您的字符串版本并不总是三重数字格式(它们可能是 "x.y" 或 "x.y.z.t.u.v...."),那么获取其中的每个部分并进行相对比较。

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循环,得到所有用点分隔的数字。