【问题标题】:How to match similar strings in javascript如何在javascript中匹配相似的字符串
【发布时间】:2017-02-04 07:26:56
【问题描述】:

我必须包含包含英超联赛球员姓名的数组。 我想按名称匹配它们,因为播放器对象没有唯一的 ID。

例如,如何进行字符串比较以匹配Zlatan IbrahimovicZlatan Ibrahimović? (注意两个字符串的最后一个字符)

【问题讨论】:

  • Regular expressions 是你的朋友。
  • 但因此我必须知道另一个名称中一个字母的每个表示,对吧?
  • 您必须知道带有重音符号的“c”与没有重音符号的“c”“等价”。但是如果没有你告诉它,计算机是无法知道的。

标签: javascript arrays string


【解决方案1】:

这不是一个小问题。 你应该看看Levenshtein distance问题

https://en.wikipedia.org/wiki/Levenshtein_distance

您可以在 google 中搜索不同的实现或使用如下库: https://www.npmjs.com/package/levenshtein

例子:

l = new Levenshtein( 'Zlatan Ibrahimovic', 'Zlatan Ibrahimović')
// l === 1

我已经用过,我很喜欢。在我的代码中,我将这个用于实验性提议。

我不在乎结果。因为在长字符串中 4 可能是一个非常好的数字,而在小字符串中 2 则非常糟糕。

我会做类似 l/Math.max(str1.length, str2.length) 之类的事情,然后你可以制作你的数字并决定哪个数字对你来说很有趣。

【讨论】:

  • Levenshtein 距离用于计算使两个字符串等效的最小编辑次数,对吧?我认为这不是 OP 想要完成的。只需使用 Levenshtein 距离和阈值 2,ZlatanKlatap 就会匹配。
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 2011-05-11
相关资源
最近更新 更多