php如何比较两个版本号,如何比较两个版本号大小,如:1.2.4a和1.2.3b?

常见的版本号命名方式,GNU,WINDOWS等,无外乎数字+字母,数字可能就是版本的迭代,如:V1.2.3, 也可能是日期,如V2018-06-25, 20180625。还有可能跟上阶段命名如 α β γ等。如果你只想比较数字部分,只需要去掉非数字部分,比较大小就行。

如果要比较字母部分,那要区分来看,对a b c这种,直接转成小写做大小比较就行。对trial, demo, unregistered这些,你要做个字典了。

如js代码let version1 = 'v1.2.3a';let version2 = 'v1.2.4b';let versionNumber1 = version1.replace(/[a-zA-Z]/g, (match,i)=> match.charCodeAt()).replace(/[^\d]/g, '') - 0;let versionNumber2 = version2.replace(/[a-zA-Z]/g, (match,i)=> match.charCodeAt()).replace(/[^\d]/g, '') - 0;console.log(versionNumber1 > versionNumber2);

以上代码面对 v1.2.97a 和 v1.10.1b 这样位数不一样的版本号可能有问题,特改进下,差异太大的就不行了,比如比较v2021333,v1.2.3

let version1 = 'v1.2.97a';let version2 = 'v1.10.1b';let versionArr1 = version1.replace(/[a-zA-Z]/g, (match,i)=> '.' + match.charCodeAt()).split(/[^\d]/);let versionArr2 = version2.replace(/[a-zA-Z]/g, (match,i)=> '.' + match.charCodeAt()).split(/[^\d]/);// 保证两个数据长度一样,面向 `v1.2` 和 `v1.2.3` 这样的情况if(versionArr1.length > versionArr2.length) {

versionArr2.splice(versionArr2.length, 0, ...Array(versionArr1.length-versionArr2.length).fill(0))

} else {

versionArr1.splice(versionArr1.length, 0, ...Array(versionArr2.length-versionArr1.length).fill(0))

}// 按节比较let result = 'version1 equels version2.'for(let i=0 ; i  versionArr2[i]) {

result = 'version1 is bigger.';        break;

} else if (versionArr1[i] 

result = 'version2 is bigger.';        break;

}

}console.log(result);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值