2010-06-09 20 views
10

Ich bin auf der Suche nach einer diff-Implementierung in Java. Ich habe gesehen, dass Python seinen eigenen SequenceMatcher (mit difflib) hat, was ich genau in Java brauche.diff Implementierung in Java

Gibt es irgendeine Portage? Oder gibt es eine andere Klasse/Bibliothek, die dasselbe in Java ausführt?

Wenn nicht, wo finde ich den Quellcode dieses difflib (wenn frei wie in Sprache), um meine eigene Implementierung von SequenceMatcher in Java zu machen?

Leider hilft Apache Commons Lang mir nicht viel.

Danke!

+0

https://java-diff.dev.java.net/ http://code.google.com/p/java-diff-utills/ http://www.incava.org/projects/java/java -diff/ – Bozho

+0

@Bozho alle Links ist veraltet – gstackoverflow

Antwort

17

Diese Bibliothek scheint genau das zu sein, wonach Sie suchen: google-diff-match-patch.

Es hat die folgenden Hauptmerkmale:

  1. Diff: Vergleichen Sie zwei Blöcke von Klartext und effizient eine Liste der Unterschiede zurück.
  2. Übereinstimmung: Gegeben eine Suchzeichenfolge, finden Sie die beste Fuzzy-Übereinstimmung in einem Block von Nur-Text. Gewichtet für Genauigkeit und Ort.
  3. Patch: Wenden Sie eine Liste von Patches auf Nur-Text an. Verwenden Sie Best-Effort, um Patch anzuwenden, auch wenn der zugrunde liegende Text nicht übereinstimmt.

Falls Sie eine Alternative möchten, können Sie auch versuchen, diese: java-diff-utils

+0

Genau das, was ich brauchte: diff, match und patch. –

+1

github Gabel von Java-diff-utils: https://github.com/KengoTODA/java-diff-utils –