OC源码-比较版本号,1.1 = 1.1.0Bata

比较版本号
1.1 = 1.1.0Bata
1.0.0.1 = 1...1
1.2 > 1.1.3
2 > 1.9
2.0.0.10 < 2.0.1

 /**
 比较版本号
 1.1 = 1.1.0Bata
 1.0.0.1 = 1...1
 1.2 > 1.1.3
 2 > 1.9
 2.0.0.10 < 2.0.1
 
 @param v1 版本1
 @param v2 版本2
 @return 返回0:相等 1:v1>v2 -1:v1<v2
 */
+ (int)convertVersion:(NSString *)v1 v2:(NSString *)v2
{
    // 去除杂质,只留下数字和点
    NSString *v1_n = [[v1 componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet]] componentsJoinedByString:@""];
    NSString *v2_n = [[v2 componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet]] componentsJoinedByString:@""];
    
    // 分解成数组
    NSArray *v1_arr = [v1_n componentsSeparatedByString:@"."];
    NSArray *v2_arr = [v2_n componentsSeparatedByString:@"."];
    
    // 取数组最大值
    NSInteger count = MAX(v1_arr.count, v2_arr.count);
    for (NSInteger i = 0; i < count; i++) {
        
        NSInteger v1_i = 0;
        NSInteger v2_i = 0;
        
        if (v1_arr.count > i) {
            v1_i = [v1_arr[i] integerValue];
        }
        if (v2_arr.count > i) {
            v2_i = [v2_arr[i] integerValue];
        }
        
        // 按顺序比较大小
        if (v1_i != v2_i) {
            return v1_i>v2_i?1:-1;
        }
    }
    // 循环结束,返回相等
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容