レーベンシュタイン距離の実装を探すことをお勧めします。2 つの文字列を等しくするには、何文字の挿入/削除と置換が必要かを示します。
これは、レーベンシュタイン距離およびその他のテキスト比較アルゴリズムを実装する C# のライブラリに関する投稿です:テキスト アルゴリズム用の .NET ライブラリ? .
ただし、レーベンシュタインを使用すると「Good Company Ltd.」と表示されるため、いくつかの方法を組み合わせて使用する必要があると思います。「Bad Company Ltd.」に似ています。「GoodCompany」よりも。
'str' を展開して前処理を行う必要があるかもしれません。'street' に変更し、'Ltd.' を削除します。文字列比較に関して「無意味な」単語として。
更新 1
Francesco De Lisiは、音声アルゴリズムの使用を提案しています。スペルミスのある名前を比較するのにより適しているようです。それでも、住所を表音部分と非表音部分 (建物番号など) に分割し、別々に比較する必要があります。
更新 2
住所の比較については、この投稿でGoogle Maps API を使用することを提案し、別の投稿で住所の解析について説明しています。Google は、番地のデータベースを持っているので、番地名の最も正確なスペルを見つけることができるため、信頼できる結果が得られると思います。正しい通り/会社名のリストがないと、間違った奇妙な名前に遭遇するかもしれませんが、多くの異なる正しい名前はそれに似ています.