4

在 jquery 中,您将如何确定一个元素是否使用了另一个元素中正在使用的单词?例如:如果一个字段包含值:fishbucket,而另一个字段包含fishdome,您将如何扫描这两个字段以获取常用词,在这种情况下是fish?或者即使是数字,比如一个包含值 12793 的字段和另一个包含值 93127 的字段,常见的数字是 127。您是否需要制作一个常用单词列表并针对这两个字段的值运行它?或者有没有办法在不运行每个确定的列表的情况下确定常用词。我似乎找不到起点,所以如果有人能给我一个起点,那就太好了。

4

3 回答 3

0

首先列出表单中的所有值。

var inputvalue = []; //array declaration

$('input[type=text]').each(function(){
inputvalue.push($(this).val());  //saves value in array
});

然后遍历所有值以通过模式匹配获得通用字符串, 您需要定义通用字符串应该有多少个字符长。

于 2013-09-09T05:58:32.183 回答
0

这个问题可以分解为找到最长的公共子序列。

这是一个用于在 2 个单词之间查找 LCS的javascript实现。您需要做的是将所有单词推送到一个数组中,然后为每个要比较的 2 个字符串调用 LCS。(如果返回长度>1,则它们之间有一个共同的文本)。

有一些字符串匹配算法(基于哈希),你可能也想用谷歌搜索它们。仅在需求巨大时使用,对于通常情况,LCS 实现应该足够了。

于 2013-09-09T06:02:31.963 回答
0

不需要jquery。简单的javascript就可以了。我只能给你一个函数来查找最长的公共起始字符串。

function commonStart(array){
    var x = array.slice(0).sort(), 
    word1 = x[0],
    word2 = x[x.length-1], 
    i= 0;
    while(word1.charAt(i) == word2.charAt(i)) ++i;
    return word1.substring(0, i);
}

例如

var testArray = ['testone','testtwo','testthree'];
    commonStart(testArray);

将产生“测试”

在生物信息学中做这类事情的标准工具是BLAST程序。它用于比较两个分子片段(如 DNA 或蛋白质)以找到它们彼此对齐的位置 - 基本上是两个字符串(有时大小为数 GB)共享公共子字符串的地方。

于 2013-09-09T06:03:44.123 回答