Entonces, quiero ser capaz de encontrar la diferencia entre dos cadenas por palabra (quizás más rápido que por personaje, si por personaje es más rápido entonces me gustaría hacerlo de esa manera).¿Cuál es el mejor algoritmo de diferencia basado en (palabra o carácter)?
Aquí es un ejemplo de lo que quiero lograr: Fuente texto:
Hello there!
Texto Modificado:
Helay scere?
diff:
Hel[lo](ay) [th](sc)ere[!](?)
- el texto entre corchetes es lo que se eliminó, el paréntesis es lo que se añadió el texto
hay una especie de una manera súper hacker para hacer esto utilizando una herramienta de línea de comandos, tales como opendiff, pero requiere un carácter de nueva línea entre medio de cada personaje, como opendiff está basada en la línea.
Estoy usando ruby, y no he encontrado ninguna herramienta para hacer esto ... pero el lenguaje no es terriblemente importante, ya que los algoritmos se pueden portar con bastante facilidad.
gracias.
Como mencionó las herramientas existentes, debería apuntar a las utilidades wdiff (word diff) y dwdiff (diff de palabras delimitadas). He pirateado algunas utilidades de Unix con bash para convertir dwdiff en una herramienta semi-gráfica [aquí] (https://github.com/masukomi/cleandiff). Los comentarios fuente muestran un par de maneras de usarlo. – masukomi