JavaScript利用正则表达式实现快速查找
十几年前还是程序员的时候,在网上看到的一个JavaScript利用正则表达式实现快速从字符串中查找出关键字的一种方法,效率很高,速度很快。
/*js快速查找*/ function JS_cruel_search(data, key) { re = new RegExp(key, [""]); // /[^,├]/g包含了要替换的所有字符, 如果文字中间有空格/逗号, 造成索引有问题 var obj = new Object(); obj.MatchPos = (data.toString().replace(re, "├").replace(/[^╃├]/g, "")).indexOf("├"); obj.IsFullMatch = ((data.toString().replace(/[╃]/g, "├")).split('├'))[obj.MatchPos] == key; return obj;//返回object类型 //alert(("'" + data.toString().replace(/[,]/g, "','")).substring( 0, data.toString().length - 3));//eval(); }
前两天,因为每天要统计群里没有接龙的单位,随手写了下面的代码,做了个简单的html,直接扔到微信里,需要用的时候,安卓手机直接打开粘贴群接龙最后的文字,直接可以查找出哪几个单位没有接龙,比手工统计快多了。
var JiCengDanWeiList= "松山湖、中堂、望牛墩、麻涌、高埗、石碣、道滘、洪梅、厚街、沙田、长安、寮步、大岭山、大朗、黄江、樟木头、清溪、塘厦、凤岗、谢岗、常平、桥头、横沥、东坑、企石、石排、茶山、南城、万江、东城、莞城、石龙、虎门"; function showResult() { var listJiCeng = JiCengDanWeiList.split("、");//一维数组 var result = ""; var content = document.getElementById("textJieLong").value;//粘贴的接龙文字 //trim(document.getElementById("textJieLong").value;/*对输入框字符串进行处理*/ var temp = content; var length = temp.length; for(var i=0; i<listJiCeng.length; i++){ temp = temp.replace(listJiCeng[i],"") if(temp.length == length){ result += listJiCeng[i] + "、"; } else{ length = temp.length; } } var textShow = result; if(result.length == 0) textShow = "没有未接龙的单位";//"全部单位均接龙完毕!"; else{ result = result.substr(0, result.length - 1); textShow = result; } document.getElementById("显示控件id").innerText = textShow; };