Porównywanie dokumentu i wyszukiwanie różnic

0

Witam.

Piszę program, którego jedną z funkcjonalności ma być porównywanie dwóch dokumentów. To swego rodzaju skrypty, więc każdy z dokumentów czytam linia po linii, parsuję i wrzucam do listy, żeby mieć szybki dostęp do każdej jednej linijki. Potem porównuję odpowiadające sobie linie z dwóch list. Ze stwierdzeniem, że linie nie są takie same oczywiście problemu nie mam. Ze wskazaniem, gdzie zaczynają się różnić też, ale dalej... Jeżeli ktoś w jednym skrypcie dodał/usunął literkę/słowo, wszystko się sypie. Podobny problem w ujęciu nieco bardziej 'globalnym' - użytkownik może też dodać lub usunąć całą linię, a wtedy sypią się wszystkie dalsze porównania.

Chciałbym osiągnąć efekt jak np. przy oglądaniu zmian artykułów w Wikipedii czy kodu w SVN-ach. Po prostu podkreślić albo podkolorować różnice, tyle że nijak nie mam pojęcia, jak owe różnice znaleźć. Może istnieje na to jakiś mądry algorytm albo wręcz gotowa biblioteka (program powstaje w C#)?

To nie tak, że przychodzę po gotowe rozwiązanie - wystarczy jakieś nakierowanie...

0

Chcesz osiągnąć taki efekt, jaki oferuje diff.
Tak trudno wrzucić w Google diff algorithm? http://en.wikipedia.org/wiki/Diff#Algorithm
Dopisać "C#": http://www.mathertel.de/Diff/default.aspx

0

I o to chodziło, brakowało mi odpowiedniej nazwy.

Podziękował ślicznie, teraz już pójdzie z górki ;-)

0

Zapoznaj się też z narzędziem Porównaj wg zawartości z TotalCommandera. Zobaczysz jak czytelnie i user-friendly można pokazać różnice. Program pozwala na kopiowanie fragmentów z jednego pliku do drugiego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1