如何比较两个文本并确定添加了哪些单词和删除了哪些单词

时间:2019-08-20 07:02:28

标签: c# .net

我有text1text2,现在我想比较text1text2并用突出显示的颜色来标识差异,以删除并添加和显示单词在text3中,红色将被删除,绿色将被添加。 我将在WebBrowser控件中显示text3,以便text3显示为htmlfile并用颜色正确显示。

示例:

enter image description here

下面是我的代码,但是我遇到了一些问题。

  1. 在for循环oldt.Length中,最后一个索引是newt[i],因此它给出错误“索引超出数组的范围”。

  2. oldText中删除了最后两个单词“ Category:javascript”,但是在我的输出结果中,我希望这两个单词都位于点击标记中,因为这两个单词已从oldtext中删除。

  3. p>
string oldText = "Name: justin Parker Link: http://github.com/jparkerweb/htmldiff-example About: html diff poc Description: front-end lib to show what has changed between html blocks Category: javascript";
string newText = "Name: Justin Parker Link: http://github.com/jparkerweb/htmldiff-example About: HTML diff example Description: front-end lib to show differences between HTML blocks";
string result = "";

string[] oldt = oldText.Split(' ');
string[] newt = newText.Split(' ');

for (int i = 0; i < oldt.Length; i++)
{
     if (oldt[i] == newt[i])
     {
         result += oldt[i].ToString() + " ";
     }
     else
     {
         result += "<strike><font color='red'>" + oldt[i].ToString() + "</font></strike>" + "<u><font color='Green'>" + newt[i].ToString() + "</font></u>" + " ";
     }
}

1 个答案:

答案 0 :(得分:2)

使用分割将text1和text2的两个单词加载到一个数组中,并比较每个数组的索引是否匹配。在循环时进行比较时,通过移动到每个索引并检查后续和先前的索引值来确定是否替换,删除或添加了逻辑。

祝您好运!!!