【问题标题】:Common words detect in different fields jqueryjquery在不同字段中检测常用词
【发布时间】:2013-09-09 05:46:55
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    不需要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)共享公共子字符串的位置。

    【讨论】:

    • 最长共同点是什么意思?
    • 'user27' 和 'user28' 不会返回 'us' 或 'use',它会返回 'user' 而不是 longest in common starting string
    【解决方案2】:

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

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

    然后遍历所有值以通过pattern matching 获取公共字符串 你需要定义公共字符串应该有多少个字符。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-07-15
        • 1970-01-01
        • 2013-08-12
        • 2019-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多