如何比较两个文本字符串是否相似,例如:
var a = "Hello Blue World";
var b = "Hello Blut World?";
if(a similar b)
{
console.log(true);
}发布于 2021-04-18 14:22:24
您可以使用string-similarity库。
根据Dice的系数找到字符串之间的相似度,这通常比Levenshtein距离更好。
var a = "Hello Blue World";
var b = "Hello Blut World?";
var stringSimilarity = require("string-similarity");
var similarityCoef = stringSimilarity.compareTwoStrings(a, b);
if (similarityCoef > 0.8) { console.log(true); }请注意,当字符串的匹配率为80% (0.8)时,similarityCoef将输出true。您可以根据需要调整此值。
发布于 2021-04-18 14:24:18
这很棘手。因为你必须以百分比的方式告诉你相似性对你来说意味着什么。这种方法怎么样?
您可以逐个字符串地比较它们,并计算匹配项。我知道,一旦一个字符串中有一个非常早的额外字符,这就会失败。但首先,这应该足够了。
var a = "Hello Blue World";
var b = "Hello Blut World?";
// only compare both strings with their mutual length, because of the loop we use
const mutualLength = (a.length > b.length) ? b.length : a.length;
const similarityAt = 90; // percent
let matchCount = 0;
// with each match increase matchCount by 1
for (let pointer = 0; pointer < mutualLength; pointer++) {
if (a.substring(pointer, 1) === (b.substring(pointer, 1) {
matchCount++;
}
}
// compute similarity in percent
const similarity = (matchCount * 100) / mutualLength;
console.log('Similarity given: ' + (similarity >= similarityAt));发布于 2021-04-18 14:24:24
if 'n' is zero then strings are equal
var str1 = "ab";
var str2 = "cd";
var n = str1.localeCompare(str2);
console.log(n);
https://stackoverflow.com/questions/67145611
复制相似问题