我使用了 Levenshtein
算法的实现来获取两个字符串之间的距离,但我真正需要的是第二个字符串中的(索引)发生插入或删除或保持不变的位置?
是否有任何实现可以在 JavaScript(或其他 C#)中执行此操作?
最佳答案
Google 提供 Diff Match 和 Patch 库,其中包含强大的算法来执行您要求的任务。这些库可用于 Java、JavaScript、Python、C++、C#、Objective-C、Lua 和 Dart。
- Diff: Diff 获取两个文本并找出差异。此实现在逐个字符的基础上工作。任何 diff 的结果都可能包含“chaff”,不相关的小共同点会使输出复杂化。差异后清理算法排除了这些微不足道的共性。
- 匹配:匹配在较大的文本中查找模式。这种匹配的实现是模糊的,这意味着即使模式包含错误并且与文本中的内容不完全匹配,它也可以找到匹配项。此实现还接受预期位置,应该在该位置附近找到匹配项。候选匹配根据 a) 模式和文本之间的拼写差异数量和 b) 候选匹配与预期位置之间的距离进行评分。匹配距离参数设置了这两个指标的相对重要性。
- 补丁:两个文本可以相互比较,生成补丁列表。然后可以将这些补丁应用于第三个文本。如果第三个文本有自己的编辑,此版本的补丁将尽最大努力应用其更改,报告哪些补丁成功,哪些失败。
您可以从 here 了解更多信息.
关于javascript - 如何获取两个字符串之间的变化(插入、删除或相同)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40379809/