首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查Javascript中字符串之间的相似性

检查Javascript中字符串之间的相似性
EN

Stack Overflow用户
提问于 2021-04-18 14:02:30
回答 4查看 151关注 0票数 2

如何比较两个文本字符串是否相似,例如:

代码语言:javascript
运行
复制
var a = "Hello Blue World";
var b = "Hello Blut World?";

if(a similar b)
{
    console.log(true);
}
EN

回答 4

Stack Overflow用户

发布于 2021-04-18 14:22:24

您可以使用string-similarity库。

根据Dice的系数找到字符串之间的相似度,这通常比Levenshtein距离更好。

代码语言:javascript
运行
复制
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。您可以根据需要调整此值。

票数 2
EN

Stack Overflow用户

发布于 2021-04-18 14:24:18

这很棘手。因为你必须以百分比的方式告诉你相似性对你来说意味着什么。这种方法怎么样?

您可以逐个字符串地比较它们,并计算匹配项。我知道,一旦一个字符串中有一个非常早的额外字符,这就会失败。但首先,这应该足够了。

代码语言:javascript
运行
复制
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));
票数 0
EN

Stack Overflow用户

发布于 2021-04-18 14:24:24

代码语言:javascript
运行
复制
if 'n' is zero then strings are equal

代码语言:javascript
运行
复制
  var str1 = "ab";
  var str2 = "cd";
  var n = str1.localeCompare(str2);
  console.log(n);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67145611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档