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

原始字符串 /对象键:较快的棕狐

修订后的弦乐 /对象键:快速棕狐跳过了懒惰的兔子

修订:添加 跳过懒惰的兔子 删除

我只想在历史表中保存修订。我真的不知道从哪里开始,所以任何想法如何使我前进或对这种方法的建议都将不胜感激。

我知道 寻找() 功能和我怀疑它是使用的主要候选人,但是我不知道如何将其视为解决方案,因为可以说会比较字符串“批发”。

有帮助吗?

解决方案

您想要一个散射算法(我已经标记了这个问题),我强烈建议您 不是 尝试写自己。我已经尝试过 - 失败 - 因为这是一个完整的问题,并且不容易包裹您的思想。相反,请查看 diff匹配点, ,该客户端具有JavaScript和Java实现(演示)或服务器端处理。如果您需要进行HTML差异查看 daisydiff 取而代之的是,尽管被提示为HTML/XML差异确实是一种痛苦的经历(出于某些原因,请参阅此页面).

差异的宏伟崇拜是 gnu差异, ,也有一个 Java实施 (找到“ java的gnu diff”)。该算法比DIFF匹配点(DMP)更优化,尽管DMP似乎一直在改进,因此,如果您需要比较非常大的字符串(例如Megabytes),则GNU算法可能会更好。

其他提示

好的,呢 这个 然后?不确定它是否按照您的意愿进行纯旧字符串,但似乎可以解决您对不知道如何处理Java集成位的担忧(因为已经编写了)。至少应该将您指向写入方向。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top