我想在我的网站上实现一种版本历史记录,并且我需要一种比较字符串或对象键的方法。例如:
原始字符串/对象键:更快的棕色狐狸
修改后的字符串/对象键:The Quick Brown Fox
跳过了那只懒兔子
修订:添加跳过了那只懒兔子已删除er
我只想在历史表中保存修订版本。我真的不知道从哪里开始,所以任何如何让我继续前进的想法或有关该方法的建议将非常感激。
我知道find() http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7e7c.html函数,我怀疑它是使用的主要候选者,但我不知道如何将其可视化为解决方案,因为它比较字符串“批发”可以这么说。
你想要一个比较算法(我已经将问题标记为这样),我强烈推荐你not尝试自己写。我尝试过,但失败了,因为这是一个 NP 完全问题,不容易理解。相反,请查看差异匹配补丁 http://code.google.com/p/google-diff-match-patch/,它有一个 JavaScript 和 Java 客户端实现(demo http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html)或服务器端处理。如果您需要进行 HTML 差异,请查看雏菊差异 http://code.google.com/p/daisydiff/相反,尽管需要预先警告,HTML/XML 比较确实是一种痛苦的经历(由于某些原因,请参阅此页面 http://code.google.com/p/google-diff-match-patch/wiki/Plaintext).
diffing 的鼻祖可能是GNU diff http://www.gnu.org/software/diffutils/,其中还有一个Java实现 http://www.bmsi.com/java/(查找“GNU Diff for Java”)。该算法比 diff-match-patch (dmp) 更优化,尽管 dmp 似乎一直在改进,因此如果您需要比较非常大的字符串(例如兆字节),GNU 算法可能是更好的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)