• JS比较软件版本号


    JS比较软件版本号 版本号格式为:a.b.c

    1.获取版本号中的数字

    function toNumber(n) {
    	// 使用正则表达式,截取字符串为数组,字符串中包含非数值型,如字母,则数组元素中会出现空值
    	var n = n.toString(),
    		n_arr = n.split(/D/);
    	if (n_arr[n_arr.length - 1] == '') {
    		n_arr.pop();
    	}
    
    	var n_replace = ['', '0', '00', '000', '0000'],
    		r_n_replace = n_replace.reverse();
    
    	for (var i = 0; i < n_arr.length; i++) {
    		var l = n_arr[i].length;
    		n_arr[i] = r_n_replace[l] + n_arr[i];
    	}
    
    	var res = n_arr.join('');
    	return res;
    }
    

    2.获取版本号中的字母

    function toString(s) {
    	var s = s.toString(),
    		// 截取字符串中的字母成为数组元素 
    		reg = s.match(/[a-zA-Z]/g);
    
    	return reg != null ? reg : null;
    	/* 被替换 */
    	// 	if (reg != null) {
    	// 		return reg;
    	// 	} else {
    	// 		return null;
    	// 	}
    }
    

    3.版本号比对

    function changeVersion(a, b) {
    	var a1 = toNumber(a),
    		a2 = toString(a),
    		b1 = toNumber(b),
    		b2 = toString(b);
    
    	if (a1 < b1) {
    		console.log('最新版本号为:' + b);
    	} else if (a1 > b1) {
    		console.log('最新版本号为:' + a);
    	} else if (a1 === b1) {
    		// 版本号相同时,对比字母,将其转为16进制数,进行比对
    		var a2_str = a2[0].toString(16),
    			b2_str = b2[0].toString(16);
    		if (a2_str < b2_str) {
    			console.log('最新版本号为:' + b);
    		} else if (a2_str > b2_str) {
    			console.log('最新版本号为:' + a);
    		} else if (a2_str === b2_str) {
    			console.log('两版本号相同!最新版本号为:' + a);
    		}
    	}
    }
    

    比对结果

    let a = '1.2.3a',
    	b = '1.2.2c';
    changeVersion(a, b); // 最新版本号为:1.2.3a
    
    let v_n = '1.2.4',
    	v_o = '1.1.1c';
    changeVersion(v_n, v_o); // 最新版本号为:1.2.4
    

    纯数字1.2.3三级版本号比较

    /* 软件版本比较 */
    function versionAnswer(vNew, vOld) {
    	if (vNew == '' || vNew == null || vNew == undefined) {
    		return false;
    	} else {
    		var vn = vNew.replace(/(^s+)|(s+$)/gi, '');
    	}
    	var vo = vOld.replace(/(^s+)|(s+$)/gi, '');
    
    	if (!vn || !vo) return true;
    
    	var reg = /d(.|d)*d/gi;
    	vn = vn.match(reg)[0];
    	vo = vo.match(reg)[0];
    
    	var vnArr = vn.split('.');
    	var voArr = vo.split('.');
    	// 版本比较 1.1.1类型
    	if (vnArr[0] > voArr[0]) {
    		return true;
    	} else if (vnArr[0] == voArr[0]) {
    		if (vnArr[1] > voArr[1]) {
    			return true;
    		} else if (vnArr[1] == voArr[1]) {
    			if (vnArr[2] > voArr[2]) {
    				return true;
    			} else if (vnArr[2] == voArr[2]) {
    				return false;
    			}
    		}
    	}
    	return false;
    }
    

    :传递要比较的两个版本号为vNew vOld,新版本号在前,老版本号在后,返回结果为True or False

  • 相关阅读:
    软件测试系列--集成测试
    软件测试系列--系统测试
    软件测试系列-软件质量
    Java初认识--函数和数组
    Java初认识--Java中的语法结构
    Java初认识--Java语言的书写规范及基本的运算符
    Java初认识--环境搭建及基本数据类型
    软件测试系列--软件缺陷管理
    ASP.NET MVC 路由系统类
    由浅入深了解Retrofit(一)
  • 原文地址:https://www.cnblogs.com/zxk5211/p/web_17.html
Copyright © 2020-2023  润新知