Skip to content

lhx077/Dotnet-Document-Comparison-Tool

Repository files navigation

文档对比器 (Document Comparison Tool)

一个基于C# WPF的文档对比工具,可以可视化地比较两个文档的差异。支持多种文件格式的纯文本提取。

功能特点

📊 可视化对比 - 三种高亮模式

  • 左右两栏显示: 清晰的并排对比视图

  • 三种高亮模式可选:

    🎯 智能高亮(推荐)

    • 相同行:浅色背景,舒适不刺眼
    • 修改行:浅黄色背景,精确标记不同字符
    • 删除字符:红色文字 + 删除线
    • 插入字符:蓝色文字 + 下划线
    • 修改字符:橙色文字 + 加粗

    📝 整行高亮

    • 整行标记为相同/不同
    • 简洁清晰,快速浏览
    • 传统对比工具风格

    ✏️ 字符级高亮

    • 每个字符精确标记
    • 相同字符无背景
    • 不同字符高亮显示

⚙️ 智能功能

  • 标点符号过滤: 可选择忽略中英文标点符号差异
    • 自动转换:,.""""
    • 适合对比中英文混排文档
    • 专注于实质内容变化

📝 文件格式支持

  • 纯文本 (.txt): 直接对比原始文本
  • Markdown (.md): 自动提取纯文本,去除格式标记
    • 移除标题标记 (#)
    • 移除粗体、斜体、删除线标记
    • 移除代码块和行内代码
    • 移除链接和图片标记
    • 移除表格分隔符
    • 移除列表标记
  • Fandom WikiText (.wiki, .wikitext): 自动提取纯文本(全面增强
    • ✅ 移除 CSS/JavaScript 代码块 {{CSS|...}}, <style>, <script>
    • ✅ 移除所有代码标签 <syntaxhighlight>, <code>, <pre>, <nowiki>
    • 嵌套模板处理 (支持最多20层) {{模板1|{{模板2|...}}}}
    • ✅ 移除文件/图片引用 [[File:...]], [[Image:...]]
    • ✅ 移除分类和跨语言链接 [[Category:...]], [[en:...]]
    • 完整表格移除 (支持嵌套表格) {| ... |}, <table>
    • ✅ 移除所有 HTML 标签及属性 <div style="...">, <span>, <font>
    • ✅ 处理内部/外部链接 [[页面|文本]], [http://...]
    • ✅ 移除格式标记 '''粗体''', ''斜体'', == 标题 ==
    • HTML实体转换 &nbsp;, &emsp;, &lt;, &gt;
    • ✅ 移除引用标签 <ref>, <references>
    • ✅ 移除魔术字 __TOC__, __NOTOC__
    • ✅ 智能清理多余空行和空格
  • 所有文件 (.): 作为纯文本处理

🎯 其他特性

  • 文件加载: 从文件系统加载文档,自动识别格式
  • 手动输入: 直接在文本框中输入或粘贴内容
  • 清除功能: 一键清除所有内容
  • 即时对比: 随时重新对比当前内容

系统要求

  • .NET 6.0 或更高版本
  • Windows 操作系统

如何使用

1. 构建项目

在项目目录中运行:

dotnet restore
dotnet build

2. 运行程序

dotnet run

或者使用 Visual Studio 打开 ComparisonUtil.csproj 并运行。

3. 使用说明

方式一:使用文件加载(推荐)

  1. 加载左侧文档:

    • 点击"加载左侧文档"按钮
    • 在文件对话框中选择文件格式:
      • 纯文本 (*.txt) - 不做任何处理
      • Markdown 文件 (*.md) - 自动提取纯文本内容
      • Fandom WikiText (.wiki;.wikitext) - 自动提取纯文本内容
      • 所有文件 (.) - 作为纯文本处理
    • 选择要对比的文件
  2. 加载右侧文档:

    • 点击"加载右侧文档"按钮
    • 同样选择合适的文件格式
    • 选择第二个文件
  3. 开始对比:

    • 点击"开始对比"按钮
    • 查看带颜色高亮的对比结果

方式二:手动输入

  1. 直接在左侧或右侧文本框中输入或粘贴内容
  2. 点击"开始对比"按钮
  3. 立即看到差异

其他功能

  • 清除内容: 点击"清除"按钮清空所有文本框
  • 重新对比: 修改文本后可随时点击"开始对比"重新分析

技术栈

  • C# / .NET 6.0
  • WPF (Windows Presentation Foundation): 用于构建用户界面
  • DiffPlex: 用于实现高效的文本差异算法

项目结构

ComparisonUtil/
├── App.xaml                  # WPF应用程序定义
├── App.xaml.cs               # 应用程序代码隐藏
├── MainWindow.xaml           # 主窗口UI定义
├── MainWindow.xaml.cs        # 主窗口逻辑(文件加载、对比显示)
├── DiffHelper.cs             # 文档对比核心算法
├── TextProcessor.cs          # 文本格式处理器(Markdown/WikiText)
├── ComparisonUtil.csproj     # 项目配置文件
├── README.md                 # 项目说明文档
├── Example Assets            # 测试样本
├──── sample1.txt               # 纯文本测试样本
├──── sample2.txt               # 纯文本测试样本
├──── sample_markdown1.md       # Markdown测试样本
├──── sample_markdown2.md       # Markdown测试样本
├──── sample_wikitext1.wiki     # WikiText测试样本
└──── sample_wikitext2.wiki     # WikiText测试样本

许可证

MIT License

作者

lhx077