String 比较两个字符串或对象并获取差异

String 比较两个字符串或对象并获取差异,string,coldfusion,diff,coldfusion-9,String,Coldfusion,Diff,Coldfusion 9,我想在我的网站上实现一种版本历史记录,我需要一种比较字符串或对象键的方法。例如: 原始字符串/对象键:更快的棕色狐狸 修订的字符串/对象键:快速棕色狐狸 跳到懒惰的兔子身上 修订:添加了跳过懒兔的删除了er 我只想在我的历史记录表中保存修订。我真的不知道从哪里开始,所以任何关于如何让我走下去的想法或方法的建议都将不胜感激 我知道这个函数,我怀疑它是一个主要的候选函数,但我不知道如何将它可视化为一个解决方案,因为它可以说是“批发”比较字符串。你想要一个差分算法(我已经标记了这个问题),我强烈建议你

我想在我的网站上实现一种版本历史记录,我需要一种比较字符串或对象键的方法。例如:

原始字符串/对象键:更快的棕色狐狸

修订的字符串/对象键:快速棕色狐狸 跳到懒惰的兔子身上

修订:添加了跳过懒兔的删除了er

我只想在我的历史记录表中保存修订。我真的不知道从哪里开始,所以任何关于如何让我走下去的想法或方法的建议都将不胜感激


我知道这个函数,我怀疑它是一个主要的候选函数,但我不知道如何将它可视化为一个解决方案,因为它可以说是“批发”比较字符串。

你想要一个差分算法(我已经标记了这个问题),我强烈建议你不要尝试自己编写。我试过了,但失败了,因为这是一个NP完全问题,不容易让你思考。取而代之的是签出,它有一个用于客户端()或服务器端处理的JavaScript和Java实现。如果您需要进行HTML差异化,请查看HTML/XML差异化确实是一种痛苦的体验()


diffing的老爹可能是,它也有一个(查找“GNU Diff for Java”)。该算法比diff match patch(dmp)更优化,尽管dmp似乎一直在改进,因此如果需要比较非常大的字符串(例如兆字节),GNU算法可能是更好的选择

好吧,那么呢?不确定它是否像您希望的那样使用普通的旧字符串,但它似乎解决了您不知道如何处理Java集成位的问题(因为它已经编写好了)。至少应该为您指明写入方向。

orangepips,这很完美。唯一的问题是它是java,我不知道如何将它集成到ColdFusion应用程序中!如果您有任何教程,请分享。不,在.zip中有一个JavaScript版本以及一个提供示例用法的.html文件。我包含的演示链接使用的是JavaScript版本。@Mel,请查看您的CF Web开发指南,generalAs@oragepips指出,将Java集成到CF应用程序中非常容易,这不是一个容易的问题。例如,在您的示例中,添加了“棕色狐狸”,删除了“棕色狐狸”,添加了“懒惰的兔子”,这也是正确的(尽管可能不太正确)。看看第三方实用程序。托德,很高兴知道。我会调查的。我意识到我不需要存储唯一的差异。我应该只存储整个修改后的字符串,并使用JS版本的diff match补丁在客户端显示更改。