11

私は現在、2つの単純な文字列を比較するための単純で軽量なアルゴリズムを探しています。

たとえば、これらの2つの文字列を取得すると:

  • 「速い茶色のキツネが怠惰な犬を飛び越える」
  • 「茶色のキツネが狂った犬にぶつかる」

2番目の単語の最初の2文字が異なることなどを通知する必要があります。

今のところ、単語を比較する非常に単純なアルゴリズムがあります。

/// <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 Framework(WP7)によって再トレーニングされており、2つのファイルまたは2つのテキストを比較できるものは必要ありません。単語の比較が必要です。

適合するライブラリまたはアルゴリズムはありますか?ありがとう :)。

4

1 に答える 1

3

DiffPlexプロジェクトをご覧ください。

コア機能は\DiffPlex\ Differ.csにあるように見えます。Silverlightビューアもありますが、移植が必要になる場合があります。

編集:

私は、DiffPlexがあなたの質問に従って単語比較を具体的にサポートしていることを付け加えたいと思いました。他のすべての文字、線などの比較方法に埋もれていることは明らかではなかったかもしれません。

于 2012-04-26T19:01:04.743 に答える