2

我有两个 pdf 文件,我想比较这两个 pdf 文件并在消息框中打印差异。

到目前为止,我有这个(但它没有像我预期的那样工作):

  private void button1_Click(object sender, EventArgs e)
    {
        string str1 = this.textBox1.Text;
        string str2 = this.textBox2.Text;

        string comparison = str1.Replace(str2,"");
        MessageBox.Show(comparison);
    }


 private void ParsePDF(string filePath)
    {
        string text = string.Empty;

        PdfReader reader = new iTextSharp.text.pdf.PdfReader(filePath);
        byte[] streamBytes = reader.GetPageContent(1);
        PRTokeniser tokenizer = new PRTokeniser(streamBytes);

        while (tokenizer.NextToken())
        {
            if (tokenizer.TokenType == PRTokeniser.TokType.STRING)
            {
                text += tokenizer.StringValue;
            }
        }
        this.textBox1.Text = text.ToString();
        this.textBox2.Text = text.ToString();
    }

}

就在下面我称之为方法: ParsePDF("C://Users//lf222aw//Desktop//file1.pdf");

我的程序是这样工作的:假设我有一个带有文本“我爱 stackoverflow”的文本框和另一个文本框“我 stackoverflow”,我的程序打印结果是:“我爱 stackoverflow”,我想要打印的是“爱”作为两个文件之间的区别

任何想法??问候,

4

4 回答 4

2

检查下面链接中的 Github 存储库。

谷歌差异匹配补丁

它是一个用于字符串比较的开源库。它是用包括 C# 在内的多种语言编写的。您可以计算两个字符串值或文本文档之间的差异差异。

于 2016-07-27T11:45:31.207 回答
1

如果将文件拆分为单词,则可以使用以下内容:

    Dim str1 = New String() {"I", "love", "stackoverflow"}
    Dim str2 = New String() {"I", "stackoverflow"}
    Dim Diff = str1.Where(Function(x) Not str2.Contains(x)).ToArray()
于 2012-09-08T14:00:31.383 回答
0

您使用String.Replace不正确。它应该在字符串 1 中找到所有出现的字符串 2 并将其替换为给定的文本。在您的示例中,您试图查找 all I stackoverflowinI love stackoverflow但没有匹配项,这就是您的程序仍在打印的原因I love stackoverflow。查看这篇关于字符串比较的 SO 帖子。如何找到两个字符串之间的差异?

于 2012-09-08T13:53:27.333 回答
0

如果我正确阅读了您的代码,那么您正在将 1 页的内容写入两个文本框。

同样使用您的替换语句,它永远不会起作用,因为“我爱 stackoverflow”中不存在“我 stackoverflow”。

如果你有“ab c”和“a c”。

您会看到“ab c”中不存在“a c”

如何找到两个字符串之间的差异?

于 2012-09-08T13:55:00.317 回答