JS找到更好的字符串匹配

时间:2015-06-03 11:06:41

标签: javascript string

假设我有三个字符串:

var s1 = 'Tokyo';
var s2 = 'Tokyo is pretty neat';
var s3 = 'Tokyo is pretty neat at summer';

我想将s3s2s1进行比较,并在s3s1中找到s2的“最佳”匹配。我的意思是,在这种情况下,匹配算法应返回s2,因为它与s3有更多共同之处。我怎样才能做到这一点?通常,使用indexOf()进行简单检查对我来说已经足够了,但现在我需要找到“最佳”匹配。

2 个答案:

答案 0 :(得分:0)

查看Levenshtein distance算法。

基本上,它需要两个字符串并找出它们之间的区别。 如果两个弦之间的距离很小,则意味着弦彼此更相似。

让我们举个例子

质询:东京夏季非常整洁

S2:东京非常整洁= 10

S3:东京= 25

Online Demo of the algorithm

Here is a javascript library

答案 1 :(得分:0)

根据您的问题和评论,此示例应该足够了。



var tests = [
    'Tokyo',
    'Tokyo is pretty neat'
    ],
    actual = 'Tokyo is pretty neat at summer';

var firstClosest = tests.reduce(function (acc, test) {
    if (test === actual.slice(0, test.length) && test.length > acc.length) {
        acc = test;
    }
    
    return acc;
}, '');

document.getElementById('out').textContent = firstClosest;

<pre id='out'></pre>
&#13;
&#13;
&#13;