java - 如何在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 编程语言中的方法将版本号视为字符串类型。
特别是这种方法必须支持所有发布版本格式,因为与数字无关
解决方案
如果您的字符串版本并不总是三倍数格式(它们可能是“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循环,得到所有用点分隔的数字。
推荐阅读
- javascript - React Hook useEffect 缺少依赖项:'init'
- javascript - 在 Node.js 服务器中,通过 axios.create() 创建多个 Axios 客户端与使用单例样式的适配器相比,是否存在性能损失?
- sql - 使用 sql pivot 获取临时表中的所有值
- python - 如何检查数组中是否找不到特定字符串然后在python中打印出“找不到字符串”?
- docker - Dockerize 两件事并在一个目录中使用
- windows - Raku:带空格的 shell 调用的语法是什么?
- arrays - 如何将单个 Fortran 文件拆分为单独的子例程和函数文件
- sql - BigCommerce / SkyVia Sql 数据集成
- r - R 中的 X 和 Y 坐标。是否有一种明显的方法可以删除距离给定点一定半径的数据?
- pycharm - 使用 Pycharm 中的深色主题,所有非编辑器面板都被静音/难以阅读