当前有大量软件和版本数据,需要存储到数据库中。需求能对版本进行大小比对检索,软件版本格式不定(如下例子):
初步想法是所有软件版本均可通过程序转换成固定长度大小字符串(数字),然后就可以针对性的比较大小。不知道有没有比较好的方案处理,然后如果转换成固定长度大小字符串,有什么比较好的算法推荐吗?
谢谢🙏
1
orluna 2023-12-06 16:40:30 +08:00
|
2
pkoukk 2023-12-06 16:53:13 +08:00
https://semver.org/
应该各个语言都有各自的版本实现 |
5
pkoukk 2023-12-06 17:32:48 +08:00
@wwxiong #4 试试你说的那些奇奇怪怪的能不能 parse 出来呗,parse 不出来让他们按标准去改,不然没辙,你总不可能希望哪个随便自己捏的版本号 甲-辰-艮坎 也能识别吧。
|
6
jim9606 2023-12-06 17:45:20 +08:00 via Android
只管句点+数字分割的部分就是了,剩下的要么当不存在要么字典序。
例如 windows 就强行规定需要使用版本号机制的组件都要用四段数字式版本号,android 只使用 versionNumber 做比较,versionCode 纯展示用 |
7
AoEiuV020JP 2023-12-06 17:48:18 +08:00
按我的习惯,横线后面的直接按字符串比大小,横线前面的用小数点拆分按数字比大小,
没什么特殊情况不会考虑把字符转成字符串去比大小, 我这边有一个把数字转成字符串比大小的案例,是因为判断条件太多,为了简化比大小这块的逻辑所以把能转成字符串的都转成字符串了,比如 置顶大于非置顶,部门大于员工,经理大于其他员工,手动排序时间字段从大到小,最后还有拼音排序,都放在 Comparator 中根本写不好,只能是每个 item 算出一个字符串,最后对字符串比大小, 不过你要存数据库比大小,不是很方便自定义 Comparator ,让我设计的话我会添加四个字段,三个数字,一个字符串, 不考虑数字部分超过 3 个的情况,真有就添加到后面字符串部分不管排序结果, |
8
mxT52CRuqR6o5 2023-12-06 17:49:49 +08:00
格式完全不定的没法比啊,你像楼上发的那个 Semantic Versioning ,有规定的格式才有的比,格式不定的话我自己发明一种写法你咋比?
|
9
lisongeee 2023-12-06 18:08:02 +08:00
|