找出两段字符串之间的差异,并能找出哪部分是新增的,哪部分是删除的

如下图所示,这是一个文章批改功能。

比如其中有一句“虽然我们相识了10年,我的收入不高
而批改的话句话是“虽然我们相识了10年,但是因为我的收入不高
他就能知道“但是因为”是新增的部分,所以标蓝了

再比如其中有一句“反正她最近升职了
批改的话是“反而是她最近升职了
他就知道把“”去掉,新增了“而是

so,这个功能应该如何实现?只谈谈思路也可,有代码或demo更佳。

找出两段字符串之间的差异,并能找出哪部分是新增的,哪部分是删除的


回答:

可以用git diff的算法, 具体名字叫 Myers 算法


回答:

简单的 diff 效果的话可以用 diffjs 这个库,效果还不错,如果涉及到语境分析,那就不太可能了。


回答:

接口仔表示:nacos就有这个功能
找出两段字符串之间的差异,并能找出哪部分是新增的,哪部分是删除的


回答:

我突然有一个想法。将两段文字按照某种规则排序,选取教小那段文字,进行二分查找,查找什么呢?查找和长段文字不同的最后一个字符,相同向右,不同向左,直到最后一个。找到这个字符后就好处理了。源右边是被删除了的,处理后的是新增的。只是这样是无序的,如果需要有序,之前加一个索引,之后在按照索引排序即可。


回答:

这个其实diff就可以实现,可以把源文件和后面的文件按每个字符分行(原来的分行变成连续2个分行),这样diff直接就可以给出那些是删除的,那些是处理后新增的。

这样把连续删除的接一起,连续新增的接一起就可以给出结果。

以上是 找出两段字符串之间的差异,并能找出哪部分是新增的,哪部分是删除的 的全部内容, 来源链接: utcz.com/p/938193.html

回到顶部