javascript - 如何获取两个字符串之间的变化(插入、删除或相同)?

标签 javascript c# algorithm levenshtein-distance

我使用了 Levenshtein 算法的实现来获取两个字符串之间的距离,但我真正需要的是第二个字符串中的(索引)发生插入或删除或保持不变的位置?
是否有任何实现可以在 JavaScript(或其他 C#)中执行此操作?

最佳答案

Google 提供 Diff Match 和 Patch 库,其中包含强大的算法来执行您要求的任务。这些库可用于 Java、JavaScript、Python、C++、C#、Objective-C、Lua 和 Dart。

  1. Diff: Diff 获取两个文本并找出差异。此实现在逐个字符的基础上工作。任何 diff 的结果都可能包含“chaff”,不相关的小共同点会使输出复杂化。差异后清理算法排除了这些微不足道的共性。
  2. 匹配:匹配在较大的文本中查找模式。这种匹配的实现是模糊的,这意味着即使模式包含错误并且与文本中的内容不完全匹配,它也可以找到匹配项。此实现还接受预期位置,应该在该位置附近找到匹配项。候选匹配根据 a) 模式和文本之间的拼写差异数量和 b) 候选匹配与预期位置之间的距离进行评分。匹配距离参数设置了这两个指标的相对重要性。
  3. 补丁:两个文本可以相互比较,生成补丁列表。然后可以将这些补丁应用于第三个文本。如果第三个文本有自己的编辑,此版本的补丁将尽最大努力应用其更改,报告哪些补丁成功,哪些失败。

您可以从 here 了解更多信息.

关于javascript - 如何获取两个字符串之间的变化(插入、删除或相同)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40379809/

相关文章:

javascript - jquery中从数组对象中获取字符串

javascript - D3 : How do I set "click" event and "dbclick" event at the same time?

javascript - 如何更改 highcharts 的局部函数

c# - 使用除系统数据库之外的数据库名称填充下拉列表

algorithm - 最快的排序技术

javascript - 如何在KOA中编写公共(public)模块?

c# - 为什么这个函数必须是静态的?

c# - 可以通过 foreach 向后迭代吗?

database - 存储分段函数的数据结构

algorithm - 最小化平方和的动态规划