计算两个字符串之间的匹配单词数

Count the number of matching words between two strings

提问人:ARGO 提问时间:1/24/2021 最后编辑:Aven DestaARGO 更新时间:1/25/2021 访问量:788

问:

您好,我想请一些帮助,如何在Jquery中做到这一点

计算两个字符串之间的匹配单词数(按顺序),以便我能够生成准确性。

// Example
string1 = "The lazy fox jumps over the fence" // (7 words)
string2 = "The lazy dog jumps under a fence yesterday" // (8 words)

Output: 4

准确率为(4 个正确单词/7 个要检查的单词)= 57%

任何想法将不胜感激

JavaScript jQuery 字符串 匹配

评论

0赞 Terry 1/24/2021
单词也必须处于相同的位置才能算作准确吗?
0赞 ARGO 1/24/2021
嗨,特里,不完全是,但它们需要井井有条。例如,如果我们在 string2 中有两个“the”字。第一个“the”和第二个“the”将计为 2 个正确的单词。
0赞 Aven Desta 1/24/2021
string3 = "The fence is for a fox who jumps".- 这与 string1 和 string2 有多少个匹配项?
0赞 ARGO 1/24/2021
@aven,如果与 string1 相比,则它有 3 个正确的匹配项(The、fox、jumps)
0赞 Aven Desta 1/24/2021
@ARGO但你说它应该按相同的顺序

答:

0赞 4xy 1/24/2021 #1

从包含元组的字符串中创建集合,然后通过逻辑共轭将它们相交。根据是否应该区分大小写,请先应用操作。结果集包含来自所有字符串的匹配单词。word, position&toUpperCase

通过这种方式,您可以测试任意数量的字符串,以查找它们彼此匹配的灭绝字符串。

我在移动设备上,编写代码不是这种情况,对不起。

2赞 hgb123 1/24/2021 #2

您可以将每个字符串转换为单词,并使用splitfilter

function getWords(str) {
  return str.split(" ").filter(Boolean);
}

function getMatchedWords(words1, words2) {
  return words1.filter((word) => words2.includes(word));
}

const string1 = "The lazy fox jumps over the fence";
const string2 = "The lazy dog jumps under a fence yesterday";

const words1 = getWords(string1);
const words2 = getWords(string2);

const matchedWords = getMatchedWords(words1, words2);

const ratio = +((100 * matchedWords.length) / words1.length).toPrecision(2);

console.log(ratio);