Подтвердить что ты не робот

Простой алгоритм разложения слов

Я хочу найти простой и легкий алгоритм для сравнения двух простых строк.

Например, если мы возьмем эти две строки:

  • "Быстрая коричневая лиса прыгает через ленивую собаку"
  • "Плывут коричневые лисицы над сумасшедшей собакой"

Это должно означать, что две первые буквы второго слова различны и т.д.

На данный момент у меня есть очень простой алгоритм, который сравнивает слова:

/// <summary>
    /// Make a diff between two strings and returns words indices
    /// </summary>
    /// <param name="a"></param>
    /// <param name="b"></param>
    /// <returns></returns>
    public static List<int> Diff(string a, string b)
    {
        List<int> indices = new List<int>();

        string[] asplit = a.Split(' ');
        string[] bsplit = b.Split(' ');

        for (int i = 0; i < asplit.Length; i++)
        {
            if (bsplit.Length > i)
            {
                if (asplit[i].CompareTo(bsplit[i]) != 0)
                {
                    indices.Add(i);
                }
            }
        }

        return indices;
    }

Итак, это скажет мне, какие слова (используя разделение на символы пробела) различны.

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

Но я переучился платформой .NET compact (WP7), и я не вижу ничего, что могло бы сравнить два файла или два текста, мне просто нужно сравнить слова.

Есть ли какая-нибудь библиотека или алгоритм, которые могут поместиться? Спасибо:).

4b9b3361

Ответ 1

Вы можете посмотреть проект DiffPlex.

Основные функциональные возможности выглядят как в \DiffPlex\Differ.cs. Он даже имеет средство просмотра Silverlight, но может потребовать некоторого портирования.

Edit:

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