Различая две большие части текста - PullRequest
0 голосов
/ 05 октября 2010

Что было бы лучшим способом сравнить большие абзацы текста, чтобы различить различия. Например, строка A и строка B одинаковы, за исключением нескольких пропущенных слов, как бы я выделил их?

Первоначально я думал разбить его на массивы слов и сравнить элементы. Однако это ломается, когда слово удалено или вставлено.

Ответы [ 6 ]

3 голосов
/ 05 октября 2010

Используйте алгоритм diff .

1 голос
/ 05 октября 2010

Я видел это несколько месяцев назад, когда работал над небольшим проектом, но он может поставить вас на правильный путь.

http://www.codeproject.com/KB/recipes/DiffAlgorithmCS.aspx

0 голосов
/ 05 октября 2010

Если это разовая сделка, сохраните их в MS Word и используйте функцию сравнения документов.

0 голосов
/ 05 октября 2010

Вот реализация механизма слияния, который сравнивает 2 html-файла и показывает выделенные различия: http://www.codeproject.com/KB/string/htmltextcompare.aspx

0 голосов
/ 05 октября 2010

Обычно разница в тексте измеряется в единицах расстояние редактирования , которое по существу равно числу добавлений, удалений или изменений символов, необходимых для преобразования одного текста в другой .

Обычная реализация этого алгоритма использует динамическое программирование .

0 голосов
/ 05 октября 2010

Вы хотите изучить алгоритмы Longest Common Subsequence . У большинства языков есть библиотека, которая сделает за вас грязную работу, и здесь - это библиотека для C #. Поиск «C # diff» или «VB.Net diff» поможет вам найти дополнительные библиотеки, которые соответствуют вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...