JavaScript相似字符串的简单处理代码,网上有人说道相似字符串处理的问题, 毕竟这种应该算比较高深了吧, 我也只能做出最简单的实现, 考虑了多出、少出一个字母, 两字母交换, 对应位置字母不同这三种情况. 这个就完全只是自己玩玩, 没什么技术含量,仅供参考。 演示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>相似字符串的简单处理</title> <script type="text/javascript"> var strs = "abc,door,vilic,angel,arashi,typhoon,water,window,windw,wind,like,dislike,love,dream,teacher,student,cat,dog,terrible,sex,dictionary,beautify,blue,color,white,paper,lamp,lamb,cd,disc,computor,mouse,mobile".split(","); function compare(str) { var list = document.getElementById("list"); list.innerHTML = ""; var items = []; var map = {}; for (var i = 0; i < strs.length; i++) items.push({ str: strs[i], value: c(strs[i], str) }); items.sort(function (a, b) { return b.value - a.value; }); for (var i = 0; i < items.length; i++) { var itemEle = document.createElement("div"); itemEle.innerHTML = items[i].str + ": " + items[i].value; list.appendChild(itemEle); } function c(a, b, loop) { var len = Math.min(a.length, b.length); var v = loop ? 0 : -Math.abs(a.length - b.length); var i; for (i = 0; i < len; i++) { a = a.substr(1); b = b.substr(1); if (a[0] == b[0]) v += 2; else { var a1 = a.substr(1); var b1 = b.substr(1); var dv1 = map[a1 + "~" + b] || (map[a1 + "~" + b] = c(a1, b, true) - 1); var dv2 = map[a + "~" + b1] || (map[a + "~" + b1] = c(a, b1, true) - 1); var dv3 = map[a1 + "~" + b1] || (map[a1 + "~" + b1] = c(a1, b1, true) - 1); var dv4; if (a.length > 1) { var as = a.split(""); as[0] = a.charAt(1); as[1] = a.charAt(0); var a2 = as.join(""); dv4 = map[a2 + "~" + b] || (map[a2 + "~" + b] = c(a2, b, true)); } else dv4 = 0; v += Math.max(dv1, dv2, dv3, dv4); break; } } return v; } } </script> </head> <body> <div> <input onfocus="compare(this.value);" onpropertychange="compare(this.value);" oninput="compare(this.value);" /> </div> <div id="list"></div> </body> </html><br /><center>如不能显示效果,请按Ctrl+F5刷新本页,更多网页代码:<a href='http://www.veryhuo.com/' target='_blank'>http://www.veryhuo.com/</a></center>提示:可修改后代码再运行! 文章导航 JavaScript实现金字塔式的乘法口诀表JavaScript的内置函数进行URL编码转换