【发布时间】:2013-12-28 06:42:47
【问题描述】:
所以,我希望能够在每个单词的基础上找到两个字符串之间的差异(可能比每个字符更快,但是,如果每个字符更快,那么我想这样做) .
这是我想要实现的示例: 原文:
Hello there!
修改文本:
Helay scere?
差异:
Hel[lo](ay) [th](sc)ere[!](?)
- 括号内的文字是删除的内容,括号内的文字是添加的内容
有一种使用命令行工具(例如opendiff)的超级黑客方式来完成此操作,但它需要在每个字符之间添加一个换行符,因为 opendiff 是基于行的。
我正在使用 ruby,但还没有找到任何工具来执行此操作...但是语言并不是非常重要,因为算法可以很容易地移植。
谢谢。
【问题讨论】:
-
因为您提到了现有工具,所以我应该指出 wdiff(单词 diff)和 dwdiff(分隔单词 diff)unix 实用程序。我已经将一些 unix 实用程序与 bash 结合在一起,以将 dwdiff 转换为半图形工具here。源 cmets 显示了几种使用它的方法。
标签: ruby string algorithm merge diff