获取字符串比较的开始和结束

时间:2013-09-29 19:01:12

标签: c# string-comparison

我正在尝试自己创建某种基于字符串的diff算法。 我正在做的是:我正在遍历我的文本文档中的每个段落,并将它们进行比较。

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

考虑使用两个字符串:

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

1 个答案:

答案 0 :(得分:0)

您正在查看常见的Longest Common Subsequence (LCS) problem。有很多论文(维基百科页面以一些链接为开头),已经在Wiki中突出了几种常见的方法。