gpt4 book ai didi

coldfusion - 将版本号解析为实数

转载 作者:行者123 更新时间:2023-12-04 10:58:43 25 4
gpt4 key购买 nike

我想确定一个版本号是否大于另一个。版本号可以是以下任何一项:

4

4.2

4.22.2

4.2.2.233



...由于版本号超出了我的控制范围,所以我无法说出数字中实际存在多少个点。

由于这个数字不是真正的数字,我不能简单地说,
Is 4.7 > 4.2.2

如何将数字(例如 4.2.2)转换为可以根据另一个版本号进行检查的实数?

我更喜欢 ColdFusion 解决方案,但基本概念也很好。

最佳答案

这是从 Mango Blog 中的插件更新代码中撕下来的,并更新了一点。它应该完全符合您的要求。当参数 1 更大时返回 1,当参数 2 更大时返回 -1,当它们完全匹配时返回 0。 (请注意,4.0.1 将与 4.0.1.0 完全匹配)

它使用 CF 列表函数,而不是数组,因此如果您改用数组,您可能会看到性能略有提高……但是,嘿,它有效!

function versionCompare( version1, version2 ){
var len1 = listLen(arguments.version1, '.');
var len2 = listLen(arguments.version2, '.');
var i = 0;
var piece1 = '';
var piece2 = '';

if (len1 gt len2){
arguments.version2 = arguments.version2 & repeatString('.0', len1-len2);
}else if (len2 gt len1){
arguments.version1 = arguments.version1 & repeatString('.0', len2-len1);
}

for (i=1; i lte listLen(arguments.version1, '.'); i=i+1){
piece1 = listGetAt(arguments.version1, i, '.');
piece2 = listGetAt(arguments.version2, i, '.');

if (piece1 neq piece2){
if (piece1 gt piece2){
return 1;
}else{
return -1;
}
}
}

//equal
return 0;
}

运行您的示例测试:
<cfoutput>#versionCompare('4.7', '4.2.2')#</cfoutput>

打印:

1

关于coldfusion - 将版本号解析为实数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com