2010-09-21 15 views
10

Estoy buscando un algoritmo diff que produzca resultados como la página de revisiones de edición de SO. Más o menos he empezado a buscar y no me opongo a hacerlo yo solo, pero no necesito reinventar la rueda.C# Algoritmo Diff para el texto

Voy a utilizar C# 4.0. Básicamente tendré dos cuerdas, una vieja y una nueva. Quiero saber qué ha cambiado en el nuevo destacando y atacando.

Respuesta

3

Normalmente se implementa con un algoritmo longest common substring. This post será de interés.

+4

No es común más larga ** ** pero subcadena común más larga ** ** subsecuencia. Una subcadena siempre es continua, pero no es necesario que exista una subsecuencia. Los cambios realizados en el texto antiguo para obtener texto nuevo no necesitan estar en caracteres consecutivos. – codaddict

+0

De acuerdo. Necesita clasificar entre el problema de subsecuencia común más largo contra el problema de subcadena común más largo. – quantity

5

Se basa en el algoritmo Longest common subsequence, popularmente conocido como LCS.

LCS de texto antiguo y nuevo texto da la parte que no se ha modificado. Entonces, las partes del texto antiguo que no forman parte de LCS son las que cambiaron.

Desde la página wiki de arriba:

Es un problema de la informática clásica, la base de diff (un programa de comparación de archivos que da salida a las diferencias entre dos archivos), y tiene aplicaciones en bioinformática.

4

Puede echar un vistazo a Menees Diff para un ejemplo escrito en C#.

+0

enlace muerto, por favor revise. thx –

+1

El enlace ha sido corregido. – cfeduke

Cuestiones relacionadas