比较两个字符串或对象并获得差异
-
15-10-2019 - |
题
我想在我的网站上实现一种版本历史记录,并且需要一种比较字符串或对象键的方法。例如:
原始字符串 /对象键:较快的棕狐
修订后的弦乐 /对象键:快速棕狐跳过了懒惰的兔子
修订:添加 跳过懒惰的兔子 删除 嗯
我只想在历史表中保存修订。我真的不知道从哪里开始,所以任何想法如何使我前进或对这种方法的建议都将不胜感激。
我知道 寻找() 功能和我怀疑它是使用的主要候选人,但是我不知道如何将其视为解决方案,因为可以说会比较字符串“批发”。
解决方案
您想要一个散射算法(我已经标记了这个问题),我强烈建议您 不是 尝试写自己。我已经尝试过 - 失败 - 因为这是一个完整的问题,并且不容易包裹您的思想。相反,请查看 diff匹配点, ,该客户端具有JavaScript和Java实现(演示)或服务器端处理。如果您需要进行HTML差异查看 daisydiff 取而代之的是,尽管被提示为HTML/XML差异确实是一种痛苦的经历(出于某些原因,请参阅此页面).
差异的宏伟崇拜是 gnu差异, ,也有一个 Java实施 (找到“ java的gnu diff”)。该算法比DIFF匹配点(DMP)更优化,尽管DMP似乎一直在改进,因此,如果您需要比较非常大的字符串(例如Megabytes),则GNU算法可能会更好。
其他提示
好的,呢 这个 然后?不确定它是否按照您的意愿进行纯旧字符串,但似乎可以解决您对不知道如何处理Java集成位的担忧(因为已经编写了)。至少应该将您指向写入方向。
不隶属于 StackOverflow