zoukankan      html  css  js  c++  java
  • 版本号比较函数-js

    面试前,让做的一个版本号比较函数。

     1     <script type="text/javascript">
     2         var v1=prompt("请输入第一个版本号");
     3         var v2=prompt("请输入第二个版本号");        
     4         console.log(versionCompare(v1,v2));        
     5    function versionCompare(v1,v2) {
     6        //版本号间如果出现字母,则视为测试版本,不比较字母大小,字母只出现一次
     7            v1=v1.replace(/s/g,"");//去除空格
     8            v2=v2.replace(/s/g,"");
     9            if(v1[0]=="v"||v1[0]=="V"){v1=v1.replace(/v/i,"");}//去除开头的第一个v
    10            if(v2[0]=="v"||v2[0]=="V"){v2=v2.replace(/v/i,"");}
    11            if(v1[0]=="."){v1=v1.replace(/./i,"");}//去除开头的.
    12            if(v2[0]=="."){v2=v2.replace(/./i,"");}
    13            if(v1[v1.length-1]=="."){v1=v1.slice(0,v1.length-1)};//去除末尾的.
    14            if(v2[v2.length-1]=="."){v2=v2.slice(0,v2.length-1)};
    15            console.log(v1+"+"+v2);
    16            var dv1=v1.split(".");//按.分隔开来
    17            var dv2=v2.split(".");
    18            var minlength=Math.min(dv1.length,dv2.length);//获取两者最短字符串长度
    19            var str1,str2,count1,count2;//定义中间变量
    20        console.log(dv1+"-"+dv2);//打印处理后的dv1和dv2
    21            for (i=0;i<minlength;i++) {
    22                count1=-1;
    23                count2=-1;
    24                //版本号有字母的情况
    25             if((dv1[i].search(/[a-zA-Z]+/)!=-1||dv2[i].search(/[a-zA-Z]+/)!=-1)&&i>0){
    26                 //对v1进行字母前内容提取
    27                 if (dv1[i].search(/[a-zA-Z]+/)!=-1) {
    28                 count1=dv1[i].search(/[a-zA-Z]+/);
    29                 str1=dv1[i].slice(0,count1);
    30                 } else{
    31                 str1=dv1[i];
    32                 }
    33                 //对v2进行字母前内容提取
    34                 if (dv2[i].search(/[a-zA-Z]+/)!=-1) {
    35                 count2=dv2[i].search(/[a-zA-Z]+/);
    36                 str2=dv2[i].slice(0,count1);
    37                 } else{
    38                 str2=dv2[i];
    39                 }
    40                 //判断字母前版本号大小
    41                     if(parseInt(str1)<parseInt(str2)){return 2;}
    42                     else if(parseInt(str1)>parseInt(str2)){return 1;}
    43                     else{
    44                             if (dv1[i][count1]==dv2[i][count2]) {//字母相同,判断字母后版本大小
    45                                 str1=dv1[i].slice(count1+1);
    46                                 str2=dv2[i].slice(count2+1);
    47                                 return (parseInt(str1)<parseInt(str2)?2:1);}
    48                             else{return 0;}//字母不同,属于不同的测试版本
    49                         }
    50                     }
    51                     //版本号无字母的情况
    52                        else if(parseInt(dv1[i])<parseInt(dv2[i])){
    53                            return 2;}
    54                        else if (parseInt(dv1[i])>parseInt(dv2[i])){
    55                            return 1;}
    56                        }
    57            //在最短字符串长度无比较结果时,谁的长谁的版本号新
    58            if (dv1.length==dv2.length) {
    59                return 0;
    60            }else{
    61                return (dv1.length<dv2.length?2:1);
    62            }
    63    }
    64 
    65     </script>

    还是要从基础学起,数据结构,操作系统,计算机网络,计算机组成原理。

  • 相关阅读:
    ABP初始化
    ABP生成错误:必须添加对程序集“netstandard”的引用
    树莓派安装Mysql
    多对多关系的中间表命名
    dapper.net 存储过程
    Rabbitmq发送方消息确认
    Rabbitmq发送消息Message的两种写法
    ThreadLocal原理
    多模块打包为可执行jar问题
    类中属性加载顺序的demo
  • 原文地址:https://www.cnblogs.com/jkj-jim/p/6486788.html
Copyright © 2011-2022 走看看