如何在 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循环,得到所有用点分隔的数字。
我有两个发布版本号。 例如: 旧版本= 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循环,得到所有用点分隔的数字。