首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

jquery 判断两个字符串是不是相似

2012-09-08 
jquery 判断两个字符串是否相似HTML codedivulli id0冬瓜很好吃/lili id1西瓜不好吃/li

jquery 判断两个字符串是否相似

HTML code
<div>   <ul>      <li id="0">冬瓜很好吃</li>      <li id="1">西瓜不好吃</li>      <li id="2">南瓜很好吃</li>      <li id="3">苦瓜很好吃</li>      <li id="4">傻瓜怎么吃</li>      <li id="5">冬天的瓜很好吃</li>   </ul></div  就是说:当我输入“冬”的时候 id=0和id=1会显示,  当我输入“很”的时候 id=0,id=2,id=3,id=5会显示当我输入 “冬瓜很好吃” 只有id=0会显示 用jquery 有没有与mysql里面的 like 一样的属性。 求解


[解决办法]
JScript code
///为字符串添加模糊比较的方法String.prototype.isLike = function(exp/*类似于SQL中的模糊查询字符串*/, i/*是否区分大小写*/) {        var str = this;        i = i == null ? false : i;        if (exp.constructor == String) {            /*首先将表达式中的‘_’替换成‘.’,但是‘[_]’表示对‘_’的转义,所以做特殊处理*/            var s = exp.replace(/_/g, function(m, i) {                if (i == 0 || i == exp.length - 1) {                    return ".";                }                else {                    if (exp.charAt(i - 1) == "[" && exp.charAt(i + 1) == "]") {                        return m;                    }                    return ".";                }            });             /*将表达式中的‘%’替换成‘.’,但是‘[%]’表示对‘%’的转义,所以做特殊处理*/            s = s.replace(/%/g, function(m, i) {                if (i == 0 || i == s.length - 1) {                    return ".*";                }                else {                    if (s.charAt(i - 1) == "[" && s.charAt(i + 1) == "]") {                        return m;                    }                    return ".*";                }            });            /*将表达式中的‘[_]’、‘[%]’分别替换为‘_’、‘%’*/            s = s.replace(/\[_\]/g, "_").replace(/\[%\]/g, "%");            /*对表达式处理完后构造一个新的正则表达式,用以判断当前字符串是否和给定的表达式相似*/            var regex = new RegExp("^" + s, i ? "" : "i");            return regex.test(this);        }        return false;    };///为数组添加模糊查询方法 Array.prototype.selectLike = function(exp/*类似于SQL中的模糊查询字符串*/, fun) {        var arr = [];        if (fun && fun.constructor == Function) {            for (var i = 0; i < this.length; i++) {                if (fun(this[i], exp)) {                    arr.push(i);                }            }        }        else {            for (var i = 0; i < this.length; i++) {                if (this[i].isLike(exp, false)) {                    arr.push(i);                }            }        }        return arr;    };使用示例:var strArr=['冬瓜很好吃','西瓜不好吃','南瓜很好吃','苦瓜很好吃','傻瓜怎么吃','冬天的瓜很好吃'];//把要模糊查询的所有字符串做成一个数组;var indexArr1=strArr.selectLike('冬');//结果为[0,5],//返回的是符合要求的下标数组,根据下标访问原始数组就得到结果了,当然略微改一下,直接返回符合要求的字符串也可以;var indexArr2=strArr.selectLike('很');//结果为[0,2,3,5]
[解决办法]
JScript code
<ul>    <li id="0">冬瓜很好吃</li>    <li id="1">西瓜不好吃</li>    <li id="2">南瓜很好吃</li>    <li id="3">苦瓜很好吃</li>    <li id="4">傻瓜怎么吃</li>    <li id="5">冬天的瓜很好吃</li></ul><input type="text" onkeyup="finds(this.value)"><script type="text/javascript">    var s="";    function finds(v){        if(v!=s&&v!=""){            $("li").css("color","#000");            $("li:contains('"+v+"')").css("color","red");        s=v;        }    }</script> 

热点排行
Bad Request.