假设我有三个字符串:
var s1 = 'Tokyo';
var s2 = 'Tokyo is pretty neat';
var s3 = 'Tokyo is pretty neat at summer';
我想将s3
与s2
和s1
进行比较,并在s3
和s1
中找到s2
的“最佳”匹配。我的意思是,在这种情况下,匹配算法应返回s2
,因为它与s3
有更多共同之处。我怎样才能做到这一点?通常,使用indexOf()进行简单检查对我来说已经足够了,但现在我需要找到“最佳”匹配。
答案 0 :(得分:0)
查看Levenshtein distance算法。
基本上,它需要两个字符串并找出它们之间的区别。 如果两个弦之间的距离很小,则意味着弦彼此更相似。
让我们举个例子
质询:东京夏季非常整洁
S2:东京非常整洁= 10
S3:东京= 25
答案 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;