Laden...

Text vergleich implementieren und darstellen

Erstellt von FrankenDerStein vor einem Jahr Letzter Beitrag vor einem Jahr 805 Views
FrankenDerStein Themenstarter:in
72 Beiträge seit 2015
vor einem Jahr
Text vergleich implementieren und darstellen

Grüße euch,

Jeder kenn doch die Programme, welche die Unterschiede zwischen Texten(meistens für Code) aufzeigen.

Meistens werden diese über Farb-Maskierungen im Text angezeigt.

Ein Beispiel für solch ein Programm ist WinMarge.

Diese Fiktionalität will ich, ähnlich wie in solchen Programmen, bei mir in meinem Tool implementieren.

Ich habe 2 Strings die es zu vergleichen glitt. Ebenso sollen die unterschiede mit 3 verschiedenen Farben dargestellt werden.

Z.b. Grün, für hinzugekommen, Rot abgegangen, Gelb ausgetauscht.

Ich habe erst an einer RichTextBox gedacht, womit die Unterschiede dargestellt werden.

Jetzt die Frage an euch, welche Möglichkeiten gibt es?

Gibt es Algorithmen oder APIs die ich verwenden kann?

Ich bin gespannt auf eure Ratschläge.

Ich finde so ein Text zu vergleichen wirkt wie eine sehr triviale Aufgabe, aber es ist ein regelrechtes Wespennest. Besonderes wenn man Anfang und Ende eines Unterschieds darstellen will und das so performant wie möglich.

16.828 Beiträge seit 2008
vor einem Jahr

Ich finde so ein Text zu vergleichen wirkt wie eine sehr triviale Aufgabe, aber es ist ein regelrechtes Wespennest.

Naja, aber mal die Funktionalität und Umsetzung solcher Anwendungen angeschaut? Das baust nicht mal eben so nach.

Jetzt die Frage an euch, welche Möglichkeiten gibt es?

Was hast denn bisher recherchiert? Ist ja nicht die Aufgabe des Forums für Dich die Evaluierung zu übernehmen 🙂
Wenn Du einfach Google Suche nach "dotnet compare texts" gesucht hättest, hättest schon ne ganze Latte an potentiellen Möglichkeiten bekommen; zB auch fertige freie aber auch kostenpflichtige Libs.

Fertig von Haus aus gibts da natürlich nix.
Keine Funktionalität, die irgendeine Runtime von Haus aus abdeckt. Im Endeffekt ist das nichts anderes als eine Logikkomponente.

I
5 Beiträge seit 2023
vor einem Jahr

Hi,

aus dem Bauchgefühl heraus würde ich es so angehen:

Änderungsdatum der Ausgangsdatei mit der der Zieldatei vergleichen, dann hast du ein Delta das entweder positiv oder negativ ist. Ist es positiv, dann ist die Zieldatei neuer, wenns negativ ist, dann ist sie älter.

Damit kannst du schon mal prüfen welche Einträge neuer sind und somit hinzugekommen sein könnten, oder ob sie weggenommen worden sind.
Dann gehst du Zeile für Zeile durch die dir prüft ob es das was du in der Zieldatei oder Quelldatei hast (je nach Delta) schon in der Quelldatei / Zieldatei vorhanden ist, wenn nicht, wurde es hinzugefügt oder entfernt.

Trivial ist das ganze, wie ABT schon sagte, nicht - aber es wäre ein Denkanstoß wie man eine eigene Implementierung durchführen könnte.

C
2.121 Beiträge seit 2010
vor einem Jahr

Es geht hier um einen Text, nicht um Dateien 😉

4.938 Beiträge seit 2008
vor einem Jahr

Der meistbenutzte Algorithmus dafür ist Myers O(ND) Difference Algorithm, s.a. Visualizing Diffs - The Myers difference algorithm.
Eine C#-Implementierung gibt es unter Diff.

FrankenDerStein Themenstarter:in
72 Beiträge seit 2015
vor einem Jahr

Ich danke für die Informationen.

Ich musst leider feststellen, dass sich doch nicht so viel Zeit habe, um mich um das Projekt zu kümmern.
Deswegen Endschuldige ich mich, dass ich mich erst jetzt melde.

Ich werde den Algorithmus mir mal ansehen und ihn Implementieren.

Meine eigen Bemühungen haben zur dieser zeit leider nicht so tolle Früchte getragen.

Sodass ich mir für XML einen eigenen Algorithmus ausgearbeitet habe.

Für die Verarbeitung von Text habe ich es nicht eigesehen dafür mir mein Hirn zu zermartern.

Die suche war da hingehend echt nervig: Ich bekam fast nur ausschließlich einfache vergleiche vorgeschlagen, wo raus ein Bool resultiert.

Deswegen nochmals danke für die Informationen.