背景:
移动开发过程中,许多场景需要用到版本号的比较,根据版本号的大小做不同的逻辑。
最近我们在做一个后台分发功能,简单说是后台判断客户端传过来的版本号,用版本号做比较判断的逻辑,然后返回合适的数据给请求者。
iOS客户端的版本号传给后台的可能是2段,3段例如2.3,1.2.1,一般不会出现4段和5段的情况。
而Android可能是3段或者4段。例如三段1.3.0,四段 1.10.1.4等。
遵守原则:
1. 版本号最多四位(可能2位,3位,4位)
2. 版本号最大不超过99
方案:
在二大原则基础上给出方案
1. 把不足四位的版本号,做补充成四位处理,末尾补0。
例如下方的四种情况:
0.1 -> 0.1.0.0
1.0 -> 1.0.0.0
1.0.0 -> 1.0.0.0
2.0 -> 2.0.0.0
2. 转换:
从左到右,分别是第一位,第二位,第三位,第四位:
第一位乘以 10的6次方,
第二问乘以 10的4次方,
第三位乘以 10的2次方,
第四位乘以 10的0次方。
例如:1.0.0 转换成: 1000000
例如 2.0 转换为 2000000
例如 3.1 转换为 3010000
例如 1.18.5 转换为 1180500
例如 1.18.5.0 转换为 1180500
总结
当然做基于纯字符串的比较也是可以的。不过好多市面上用的字符串比较版本号好多方法大多是错的,很多情况没有覆盖到。
把客户端字符串转换成整数来判断,是符合当前业务场景的。
局限性:
转换为数字比较,确实存在的局限性,例如超过4段怎么处理,有一段数字大约99怎么办?
万事都有原则不是,在遵循原则的基础上,用最简单,最容易理解的方案就是最好的。
你有其他的方案吗?
领取专属 10元无门槛券
私享最新 技术干货