2010-06-09 15 views
10

Estoy buscando una implementación de diff en Java. He visto que Python tiene su propio SequenceMatcher (con difflib), que es exactamente lo que necesito ... en Java.implementación de diff en Java

¿Hay algún portage? ¿O hay alguna otra clase/biblioteca que realiza lo mismo en Java?

Si no, ¿dónde puedo encontrar el código fuente de esa difflib (si es libre como en el habla) para hacer mi propia implementación de SequenceMatcher en Java?

Desafortunadamente, Apache Commons Lang no me ayuda mucho.

Gracias!

+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 todos los enlaces están caducados – gstackoverflow

Respuesta

17

Esta biblioteca parece ser lo que buscas: google-diff-match-patch.

Tiene las siguientes características principales:

  1. Diff: comparar dos bloques de texto simple y eficiente devuelven una lista de diferencias.
  2. Coincidir: Dada una cadena de búsqueda, encuentre su mejor coincidencia difusa en un bloque de texto sin formato. Ponderado tanto por la precisión como por la ubicación.
  3. Parche: Aplicar una lista de parches en texto sin formato. Utilice el mejor esfuerzo para aplicar el parche incluso cuando el texto subyacente no coincida.

En caso de que quiera una alternativa, también podría intentar esto: java-diff-utils

+0

Exactamente lo que necesitaba: diferencias, coincidencia y parche. –

+1

tenedor github de java-diff-utils: https://github.com/KengoTODA/java-diff-utils –