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

JS比较软件版本号的更多相关文章

  1. js实现软件版本号的比较

    //js实现软件版本号的比较 //随机举两个例子 pc2.4.3 或者pc3.5.6 /** * 输入 v1,v2 * 返回true代表v1比v2的版本新,false则代表v1与v2相等或者v1< ...

  2. 在Android 下写一个检测软件版本号 以自动升级APP 的插件

    直接上图上代码: 1.插件类的编写 工程目录结构图: 代码如下: package org.apache.cordova.versionupdate; import org.apache.cordova ...

  3. [转]软件版本号扫盲——Beta RC Preview release等

      1.软件版本阶段说明 *Alpha版:此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改. *Beta版:该版本相对于α版 ...

  4. VS软件版本号定义、规则和相关的Visual Studio插件

    http://blog.csdn.net/cnhk1225/article/details/37500593 软件版本号主要标识了软件的版本,通过其可以了解软件.类库文件的当前版本,使得软件版本控制有 ...

  5. JS实现两版本号大小比较

    JavaScript实现版本号比对(含字母) 昨天,有一道面试题,要求是这样的: 用你熟悉的编程语言,实现一个比较任意两个软件版本号大小的函数,如1.2.3a与1.2.4b进行比较,后者版本号更大,要 ...

  6. js获取微信版本号的方法

    微信现在几乎已经普遍在使用,但是微信版本一直在更新,不同的版本有不同的功能,于是了解微信的版本号很重要,以便自己及时更新体验新的功能.那么如何用js获取微信版本号呢? 一.判断微信版本号 ? 1 2 ...

  7. android获取当前软件版本号号和版本号名称

    <span style="font-size:18px;">/** * 获取本地软件版本号 */ public static int getLocalVersion(C ...

  8. 在js在添版本号

    为了增加用户访问网站体验,快速打开网页,许多网站都对不常更新的js,css文件在浏览器端设置了缓存.但如果在服务器端做了更新,浏览器使用的仍是缓存在本地的js文件,除非强制清缓存(ctrl+F5).为 ...

  9. 隐藏Nginx软件版本号信息

    为了提高我们web服务器的安全性,我们应当尽可能的隐藏服务器的信息以防止他人通过这些信息找到漏洞侵入我们的服务器,对于Nginx而言,我们安装好Nginx后最好隐藏Nginx的版本号,以防止通过该版本 ...

随机推荐

  1. Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  2. APS.NET MVC + EF (06)---模型

    在实际开发中,模型往往被划分为视图模型和业务模型两部分,视图模型靠近视图,业务模型靠近业务,但是在具体编码上,它们之间并不是隔离的. 6.1 视图模型和业务模型 模型大多数时候都是用来传递数据的.然而 ...

  3. 大话区块链【Blockchain】

    最近这几天区块链又粉墨登场了,新闻媒体也一直在大量报道,宣称可能要在金融界掀起一番浪潮.甚至有人说很久之前中国就出现了区块链的产物——麻将.那么区块链到底是什么,麻将和区块链又有什么关系呢? 笔者这两 ...

  4. CentOS7下配置防火墙放过Keepalived

    Keepalived是一个轻量级的HA集群解决方案,但开启防火墙后各节点无法感知其它节点的状态,各自都绑定了虚拟IP.网上很多文章讲要配置防火墙放过tcp/112,在CentOS7下是无效的,正确的做 ...

  5. jmeter-分布式压测部署之负载机的设置

    本文分三个部分: 1.windows下负载机的配置 2.Linux下负载机的配置 3.遇到的问题 *************************************************** ...

  6. 高精度gcd

    #include<iostream> #include<cstdio> #include<cstring> #define inf 1000000000 using ...

  7. access truncate

    access int access(const char *pathname, int mode); 确定文件或文件夹的访问权限 //unistd.h #define R_OK 4 /* Test f ...

  8. Spring事务部分知识点整理

    目录 1.数据库事务基础概念 2.Spring中注解事务的使用 3.Spring事务使用注意场景 1.数据库事务基础概念   数据库事务是对数据库一次一系列的操作组成的单元,可以包含增删改查或者只有单 ...

  9. Python的爬虫利器之urllib

    urllib包 urllib是一个包含几个模块来处理请求的库:  - urllib.request发送http请求  - urllib.error处理请求过程中出现的异常  - urllib.pars ...

  10. cocos2dx3.x + xcode7.3 问题“libpng error: CgBI: unhandled critical chunk”

    今天用 cocos2dx3.11.1 + xcode7.3.1 进行开发,新建项目后遇到如下问题: 在iphone(ios9.3.5)真机运行项目(用xcode自带虚拟机没有出现问题) auto sp ...