大佬教程收集整理的这篇文章主要介绍了Javascript字符串匹配模式帮助,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是要求.
我有一个像这样的字符串,
我需要将此字符串与这样的字符串匹配
favorite oil and some other topics can be based on something blah blah
我如何获得匹配的文本块的交集?
我已经尝试了相交的Javascript脚本函数,对于某些字符串,它无法正常工作.
如何解决这个问题呢?这可以使用Regex完成吗?
请指教.
如果琴弦不长,我推荐使用Tim的方法.否则,这是具有动态编程的最长公共子串算法的Javascript实现.运行时为O(mn),其中m和n分别是2个字符串的长度.
示例用法:
var first = "Here is a quick guide for the next time you reach for your favorite oil and some other topics"; var second = "favorite oil and some other topics can be based on something blah blah"; console.log(first.intersection(second)); // ["favorite oil and some other topic"]
这是算法实现.它返回最长公共子串的数组.扩展了本机String类,因此所有字符串都可以使用intersect方法.
String.prototype.intersection = function(anotherString) { var grid = createGrid(this.length,anotherString.length); var longestSoFar = 0; var matches = []; for(var i = 0; i < this.length; i++) { for(var j = 0; j < anotherString.length; j++) { if(this.charAt(i) == anotherString.charAt(j)) { if(i == 0 || j == 0) { grid[i][j] = 1; } else { grid[i][j] = grid[i-1][j-1] + 1; } if(grid[i][j] > longestSoFar) { longestSoFar = grid[i][j]; matches = []; } if(grid[i][j] == longestSoFar) { var match = this.subString(i - longestSoFar + 1,i); matches.push(match); } } } } return matches; }
还需要此辅助函数来创建一个所有元素初始化为0的二维数组.
// create a 2d array function createGrid(rows,columns) { var grid = new Array(rows); for(var i = 0; i < rows; i++) { grid[i] = new Array(columns); for(var j = 0; j < columns; j++) { grid[i][j] = 0; } } return grid; }
以上是大佬教程为你收集整理的Javascript字符串匹配模式帮助全部内容,希望文章能够帮你解决Javascript字符串匹配模式帮助所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。