Есть ли что-нибудь доступное для .NET, чтобы получить различия в двух строках? - PullRequest
2 голосов
/ 29 апреля 2010

Я ищу способ определить различия между двумя строками и выделить их в обеих строках.

Я подозреваю, что большинство библиотек 'diff' не будут работать, поскольку они показывают различия в строках (я полагаю).

Будет работать либо алгоритм, либо библиотека.

Спасибо, Mark

Ответы [ 4 ]

6 голосов
/ 29 апреля 2010

DiffPlex может обрабатывать различные типы внутристрочных различий, включая символьные и словосочетания. Я думаю, что он сможет сделать все, что вы просите здесь.

2 голосов
/ 29 апреля 2010

Исходя из вашего вопроса, вы, похоже, отказались от использования существующей программы и решили написать свою, потому что считаете, что существующие программы не могут отображать различия в строках.

Однако WinMerge может отображать различия между строками.

image

Это отвечает вашим потребностям? Или вам нужно, чтобы это был компонент .NET по какой-то причине?

1 голос
/ 29 апреля 2010

Возможно, вы захотите изучить использование расстояния Левенштейна или некоторого аналогичного алгоритма. Для реализации алгоритма Левенштейна на C # см. здесь (если вы действительно хотите написать это сами).

Этот вопрос задает нечто похожее, с принятым ответом, указывающим на группу проектов, связанных с * diff . Было написано много хорошего кода, который определенно стоит посмотреть.

0 голосов
/ 29 апреля 2010

String.Compare будет работать. Если вы хотите сравнить слова, просто разбейте начальную строку на массив строк и выполните цикл по ней.

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