我正在尝试自己创建某种基于字符串的差异算法。我正在做的是:我正在遍历我的文本文档中的每一段,比较它们。
现在我正在努力的是两个字符串的比较开始和结束。
考虑有两个字符串:
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
.