Сравнение текста в .NET Framework - PullRequest
1 голос
/ 05 августа 2011

Есть ли способ сравнить текст в .NET, и он скажет вам, в чем различия?Т.е. разница между "abc123efg" и "abc456efg" заключается в том, что "123" и "456" начинаются с индекса 3 и заканчиваются индексом 5 и т. Д.

Я знаю, что могу написать код для этого, ноесли что-то уже существует в .NET Framework, то я хотел бы использовать это.В качестве альтернативы, если есть библиотека с открытым исходным кодом, которая делает это, то это также будет хорошим вариантом.

Ответы [ 4 ]

1 голос
/ 05 августа 2011

То, что вы ищете, называется «Diff» (сокращение от «разность»).Ничего подобного не встроено в Framework, но есть ряд проектов с открытым исходным кодом, таких как http://diffplex.codeplex.com/, которые вы можете использовать.

1 голос
/ 05 августа 2011
1 голос
/ 05 августа 2011

То, что вы ищете, это своего рода операция «И» над строками.Вот хорошая статья, которая делает это: http://www.codeproject.com/KB/recipes/DiffAlgorithmCS.aspx

0 голосов
/ 05 августа 2011

Я думаю, что это делает трюк:

string a = "abc123efg";
string b = "abc456efg";

var difference = ((from c in a
                  select c).Except(from t in b select t)).ToList();

string result = new string(difference.ToArray());
int startIndex = a.IndexOf(result);
int endIndex = (startIndex + result.Length)-1;
...