【愚公系列】2022年10月 .NET CORE工具案例-DiffPlex文本差异组件

举报
愚公搬代码 发表于 2022/10/31 19:58:33 2022/10/31
【摘要】 前言在开发工程师的工作日常里,时常需要对文本进行比较、MD5、Base64、格式化等处理,有时候还需要用nginx来搭建静态或转发服务器。虽然现在有许多在线网站可以处理,而且功能也挺丰富的,但可能有时无法较好处理本地文件,许多链接整理较为麻烦,同时还需保持可联网模式。对于开发人员来说,Git 是我们经常使用的工具,在每次编写完代码并提交后,我们可以通过 git diff 来对比不同版本之间...

前言

在开发工程师的工作日常里,时常需要对文本进行比较、MD5、Base64、格式化等处理,有时候还需要用nginx来搭建静态或转发服务器。虽然现在有许多在线网站可以处理,而且功能也挺丰富的,但可能有时无法较好处理本地文件,许多链接整理较为麻烦,同时还需保持可联网模式。

对于开发人员来说,Git 是我们经常使用的工具,在每次编写完代码并提交后,我们可以通过 git diff 来对比不同版本之间的代码的差异,当然也可以借助一下开发工具, 这样可以让我们很直观的看到修改了哪里? 不同版本之间有什么不同?这样也可以很方便的来做 code review。

最近发现了一个比较好用的内容DiffPlex库(就叫DiffPlex),非常方便js开发者实现文本内容的diff,既可以直接简单输出格式化的字符串比较内容,也可以输出较为复杂的changes数据结构,方便二次开发。这里笔者就基于这个库实现高仿github的文本diff效果。

对于c#就有一个DiffPlex文本差异组件来实现git的功能

git地址:https://github.com/mmanela/diffplex
在这里插入图片描述

一、DiffPlex文本差异组件

1.Nuget 安装 DiffPlex 组件

Install-Package DiffPlex

在这里插入图片描述

2.比较代码

using DiffPlex.DiffBuilder.Model;
using DiffPlex.DiffBuilder;

var before = $@"
    XXXX0001XXXX0001。
    ssss0001,
    XXXX0001。
";

var after = $@"
    XXXX0001XXXX0001XXXX0001XXXX0001。
";

var diff = InlineDiffBuilder.Diff(before, after);

var savedColor = Console.ForegroundColor;
foreach (var line in diff.Lines)
{
    switch (line.Type)
    {
        case ChangeType.Inserted:
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write("+ ");
            break;
        case ChangeType.Deleted:
            Console.ForegroundColor = ConsoleColor.Red;
            Console.Write("- ");
            break;
        default:
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.Write("  ");
            break;
    }

    Console.WriteLine(line.Text);
}
Console.ForegroundColor = savedColor;

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。