この記事は2020年06月02日に投稿しました。
目次
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC#で2つのテキストの差分を検出する方法についてです。
2. C#で2つのテキストの差分を検出する
C#で2つのテキストの差分を検出するには、googleのdiff-match-patchライブラリを使用します。
実装例
実行するには、リンク先のDiffMatchPatch.csをプロジェクトに取り込んでください。
実装例はほぼgoogleのサンプルと同じです。
Program.cs
using DiffMatchPatch; using System; namespace CSharpDiffMatchPatch { class Program { static void Main(string[] args) { var dmp = new diff_match_patch(); // diffを実行します。 var diff = dmp.diff_main("Line1\nLine2\nLine3", "Line1\nLine2'\nLine2\nLine3"); // diffの実行結果を人が理解しやすい形に整形します。 dmp.diff_cleanupSemantic(diff); // diffの実行結果を表示します。 foreach (var result in diff) { Console.WriteLine(result); } Console.ReadKey(); } } }
実行結果
同じ箇所は"EQUAL"、追加された場所は"INSERT"で検出されます。
Diff(EQUAL,"Line1¶") Diff(INSERT,"Line2'¶") Diff(EQUAL,"Line2¶Line3")
ライブラリ
diff-match-patchライブラリ
3. おわりに
以前から2つのテキストを差分を検出するdiffライブラリを探してました。
今回diff-match-patchライブラリを見つけたので紹介します。
思ったより簡単に利用できました。
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688