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

1.获取版本号中的数字

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

2.获取版本号中的字母

  1. function toString(s) {
  2. var s = s.toString(),
  3. // 截取字符串中的字母成为数组元素
  4. reg = s.match(/[a-zA-Z]/g);
  5. return reg != null ? reg : null;
  6. /* 被替换 */
  7. // if (reg != null) {
  8. // return reg;
  9. // } else {
  10. // return null;
  11. // }
  12. }

3.版本号比对

  1. function changeVersion(a, b) {
  2. var a1 = toNumber(a),
  3. a2 = toString(a),
  4. b1 = toNumber(b),
  5. b2 = toString(b);
  6. if (a1 < b1) {
  7. console.log('最新版本号为:' + b);
  8. } else if (a1 > b1) {
  9. console.log('最新版本号为:' + a);
  10. } else if (a1 === b1) {
  11. // 版本号相同时,对比字母,将其转为16进制数,进行比对
  12. var a2_str = a2[0].toString(16),
  13. b2_str = b2[0].toString(16);
  14. if (a2_str < b2_str) {
  15. console.log('最新版本号为:' + b);
  16. } else if (a2_str > b2_str) {
  17. console.log('最新版本号为:' + a);
  18. } else if (a2_str === b2_str) {
  19. console.log('两版本号相同!最新版本号为:' + a);
  20. }
  21. }
  22. }

比对结果

  1. let a = '1.2.3a',
  2. b = '1.2.2c';
  3. changeVersion(a, b); // 最新版本号为:1.2.3a
  4. let v_n = '1.2.4',
  5. v_o = '1.1.1c';
  6. changeVersion(v_n, v_o); // 最新版本号为:1.2.4

纯数字1.2.3三级版本号比较

  1. /* 软件版本比较 */
  2. function versionAnswer(vNew, vOld) {
  3. if (vNew == '' || vNew == null || vNew == undefined) {
  4. return false;
  5. } else {
  6. var vn = vNew.replace(/(^\s+)|(\s+$)/gi, '');
  7. }
  8. var vo = vOld.replace(/(^\s+)|(\s+$)/gi, '');
  9. if (!vn || !vo) return true;
  10. var reg = /\d(\.|\d)*\d/gi;
  11. vn = vn.match(reg)[0];
  12. vo = vo.match(reg)[0];
  13. var vnArr = vn.split('.');
  14. var voArr = vo.split('.');
  15. // 版本比较 1.1.1类型
  16. if (vnArr[0] > voArr[0]) {
  17. return true;
  18. } else if (vnArr[0] == voArr[0]) {
  19. if (vnArr[1] > voArr[1]) {
  20. return true;
  21. } else if (vnArr[1] == voArr[1]) {
  22. if (vnArr[2] > voArr[2]) {
  23. return true;
  24. } else if (vnArr[2] == voArr[2]) {
  25. return false;
  26. }
  27. }
  28. }
  29. return false;
  30. }

:传递要比较的两个版本号为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. C# 方法的out、ref、params参数

    一.out参数实例 [实例]求一个数组中的最大值.最小值.总和.平均值 class Program { static void Main(string[] args) { //写一个方法 求一个数组中 ...

  2. Linux链接文件——软连接和硬链接

    Linux链接文件——软连接和硬链接 摘要:本文主要介绍了Linux系统中的链接文件. 文件系统 在Linux系统中,将文件分为两个部分:用户数据和元数据. 元数据(inode) 元数据即文件的索引节 ...

  3. 链表逆序,java实现

    package com.cskaoyan.linkedlist; //反转数组 public class LinkedListDemo2 { public static Node reverse(No ...

  4. excel转pdf,itextpdf转换excel

    最近项目有需求,需要把excel转pdf.由于时间比较急,所以在github上找了一个转换的.最终没用上,但还是踩坑了一波. 踩坑一: 首先,这个是导出的流之间会互相影响,因为流读取过,导致导出的ex ...

  5. iOS tableView侧滑删除的第三方控件

    (到我的文件中,下载“tableview中cell测滑删除的第三方控件”),使用方法如下: 在tableView中的.m中,设置cell的方法上,事例代码如下,其中,EaseConversationC ...

  6. PHP初探--wamp安装配置

    WAMP = Windows下的 Apache + MySQL+PHP WampServer的安装与配置 直接百度,下载后直接跟着安装步骤走就OK. 安装成功后,点击运行,然后电脑右下角会出现图标.服 ...

  7. 关于VS2015 发布.net mvc 网站失败的问题

    问题:VS生成成功,发布失败,在“正在连接到***文件夹”处就不能继续了.. 项目开发告一段落,准备部署到服务器上进行最后测试,但是始终发布失败  生成成功,发布失败,没有任何提示信息 一开始以为是文 ...

  8. LCA最近公共祖先-- HDU 2586

    题目链接 Problem Description There are n houses in the village and some bidirectional roads connecting t ...

  9. SpringMVC结果参数转换XSS攻击安全处理

    首先在sprigMvc的配置文件中配置返回结果集使用的类 <!-- 参数转码 --> <mvc:annotation-driven> <!-- 注册处理 JSON 的转换 ...

  10. VS调试

    1.调试输出变量值 F9先设置断点,开始调试后,依次选择调试——>窗口——>局部变量和监视——>监视1. 点击“全部中断”——>之后局部变量会显示相关变量值,监视1可以查看变量 ...