网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 JavaScript中两个字符串的匹配
内容
    本文分享JavaScript中两个字符串的匹配的一个实例代码,希望能给大家做一个参考。
    工作中遇到一个问题,两个字符串匹配,要求:每个字符串中最多含有一个*,?可以无限多个
    *代表一个任意长度的字符串,而?则代表一个字符
    要求可以提示出两个冲突
    代码如下:
    <input type="text" id="str1"><br>
    <input type="text" id="str2"><br>
    <input type="button" onclick="checkMarchX()" value="CHECK">
    用JavaScript实现代码如下:
    代码如下:
    function checkMarchX()
    {
        var str1 = document.getElementById('str1').value;
        var str2 = document.getElementById('str2').value;
        var str1XPosition = str1.indexOf('*');
        var str2XPosition = str2.indexOf('*');
        if(str1XPosition!=-1 && str2XPosition!=-1)//两者都含有*
        {
            var position = str1XPosition>str2XPosition?str2XPosition:str1XPosition;//success
            if(position!=0)
            {
                var patbeforeStr1 = str1.substring(0,position);
                var patbeforeStr2 = str2.substring(0,position);
                if(checkMarchQ(patbeforeStr1,patbeforeStr2))
                {
                    //alert(str1+'与'+str2+"前半部分冲突");
                    //然后对应后半部分进行测试
                    var str1XBackPosition = str1.length-str1XPosition-1;
                    var str2XBackPosition = str2.length-str2XPosition-1;
                    var backposition = str1XBackPosition>str2XBackPosition?str2XBackPosition:str1XBackPosition;
                    if (backposition==0)
                    {
                        alert(str1+'与'+str2+"冲突");
                    }
                    else
                    {
                        var patbackStr1 = str1.substring(str1.length-backposition,str1.length);
                        var patbackStr2 = str2.substring(str2.length-backposition,str2.length);
                        if(checkMarchQ(patbackStr1,patbackStr2))
                        {
                            alert(str1+'与'+str2+"冲突");
                        }
                    }
                }
            }
            else
            {
                //alert(str1+'与'+str2+"前半部分冲突");
                var str1XBackPosition = str1.length-str1XPosition-1;
                var str2XBackPosition = str2.length-str2XPosition-1;
                var backposition = str1XBackPosition>str2XBackPosition?str2XBackPosition:str1XBackPosition;
                if (backposition==0)
                {
                    alert(str1+'与'+str2+"冲突");
                }
                else
                {
                    var patbackStr1 = str1.substring(str1.length-backposition,str1.length);
                    var patbackStr2 = str2.substring(str2.length-backposition,str2.length);
                    if(checkMarchQ(patbackStr1,patbackStr2))
                    {
                        alert(str1+'与'+str2+"冲突");
                    }
                }
            }
        }
        else if((str1XPosition==-1 && str2XPosition!=-1)||(str1XPosition!=-1 && str2XPosition==-1))//有且只有一个字符串含有*
        {
            var strX = str1XPosition==-1?str2:str1;//含有*的字符串
            var strNoX = str1XPosition==-1?str1:str2;//不含*的字符串
            if (strX.length-1<strNoX.length)
            {
                var position = strX.indexOf('*');
                if(position==0)
                {
                    //alert(str1+'与'+str2+"前半部分冲突");
                    var backposition = strX.length-position-1;
                    if (backposition==0)
                    {
                        alert(str1+'与'+str2+"冲突");
                    }
                    else
                    {
                        var patbackStr1 = str1.substring(str1.length-backposition,str1.length);
                        var patbackStr2 = str2.substring(str2.length-backposition,str2.length);
                        if(checkMarchQ(patbackStr1,patbackStr2))
                        {
                            alert(str1+'与'+str2+"冲突");
                        }
                    }
                }
                else
                {
                    var patbeforeStr1 = str1.substring(0,position);
                    var patbeforeStr2 = str2.substring(0,position);
                    if(checkMarchQ(patbeforeStr1,patbeforeStr2))
                    {
                        //alert(str1+'与'+str2+"前半部分冲突");
                        var backposition = strX.length-position-1;
                        if (backposition==0)
                        {
                            alert(str1+'与'+str2+"冲突");
                        }
                        else
                        {
                            var patbackStr1 = str1.substring(str1.length-backposition,str1.length);
                            var patbackStr2 = str2.substring(str2.length-backposition,str2.length);
                            if(checkMarchQ(patbackStr1,patbackStr2))
                            {
                                alert(str1+'与'+str2+"冲突");
                            }
                        }
                    }
                }
            }
        }
        else
        {
            if(checkMarchQ(str1,str2))
            {
                alert(str1+'与'+str2+"冲突");
            }
        }
    }
    function checkMarchQ(str1,str2)
    {
        var flagque = false;
        if(str1.length==str2.length)
        {
          //长度相同才有可能冲突
            for (var i=0 ;i<str1.length ;i++ )
            {
                if(str1.substr(i,1)!='?' && str2.substr(i,1)!='?')
                {
                    if(str1.substr(i,1)!=str2.substr(i,1))
                    {
                        flagque = false;//表示不冲突
                        break;
                    }
                    else
                    {
                        flagque = true;//表示冲突
                    }
                }
            }
        }
        return flagque;
    }
    其中*最起码为一个字符,以上程序并没有对输入的合法性进行验证
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/21 10:38:21