0

我正在尝试自己创建某种基于字符串的差异算法。我正在做的是:我正在遍历我的文本文档中的每一段,比较它们。

现在我正在努力的是两个字符串的比较开始和结束。

考虑有两个字符串:

This is a test-text.

This is a very long test-text.

这意味着第二行 ( 'very long ') 中有 10 个字符(9 个文本,1 个空格)发生了变化。

这些字符应相应地突出显示。我已经想出了找到字符串差异开始的解决方案(比如:索引 n 是差异开始的地方):

int diffIndexStart = localText.Zip(serverText, (c1, c2) => c1 == c2).TakeWhile(b => b).Count();

现在如何检测字符串何时再次匹配,以便我可以停止在那里突出显示,而不是突出显示行的其余部分(以 开头diffIndexStart)。

还有一个问题:当一行中有多个更改时,假设:

This is a test-text.

This, apparently, is a very long test-text.

现在我有两个变化:, apparently,very long.

4

1 回答 1

0

您正在查看常见的最长公共子序列 (LCS) 问题。有很多关于这方面的论文(维基百科页面提供了一些链接作为开始),维基中已经突出了几种常见的方法。

于 2013-09-29T19:04:21.767 回答