美文网首页工作生活
字符串匹配的问题

字符串匹配的问题

作者: 代艳霞 | 来源:发表于2019-07-09 23:11 被阅读0次

    今天在写搜索功能的时候,发现在拿用户输入的内容和数据库的数据进行匹配的时候,出现了一个奇怪的现象,当用户什么也不输入的时候,居然匹配到了所有的数据,代码如下:

    function LoadItem(ItemValue) {
        var html = [];
        for (i = 0; i < allHeroList.length; i++) {
            var ItemName = allHeroList[i].yxmc_b4;
            if (ItemName.indexOf(ItemValue) != "-1") {
                html.push( '<li><a href="'+allHeroList[i].jsglxqylj_90+'"><img src="'+allHeroList[i].yxtx_2b+'" width="74" height="74" alt="英雄"><em>'+allHeroList[i].yxmc_b4+'</em></a></li>');
            }
        }
        if (html.length == 0) {
            $(".role").html(" ");
            return;
        }
        $(".role").html(html.join(""));
        }
    

    *经过调试发现,并不是代码写的有问题,而是空字符串和所有的字符串都匹配,这让我百思不得其解,为了验证,去查看了 MDN文档给出的解释如下:

    "Blue Whale".indexOf("", 10);     // returns 10
    

    经过思考,我觉得这样设计在逻辑上是很合理的,原因如下:(备注:下文中 长度为 0的字符串 和 空字符串 是同一个意思,都表示长度为0的字符串)

    • 字符与字符之间的间隔,就相当于长度为 0的字符串;
    • 因为从逻辑上来说,长度为0的字符串应该包含空字符串;既然长度为0的字符串都包含空字符串了,那么长度大于0的字符串更应该包含空字符串。

    相关文章

      网友评论

        本文标题:字符串匹配的问题

        本文链接:https://www.haomeiwen.com/subject/ejohhctx.html