3

こんにちは、入力された単語のスペルをチェックするデスクトップ アプリケーション (C#) を作成しています。NuGet を使用してプロジェクトに追加した Hunspell を使用しています。aff ファイルと dic ファイルの 2 つのファイルがあります。

using (Hunspell english = new Hunspell("en_US.aff", "en_US.dic"))
{
    bool isExist = english.Spell("THesis");
}

私の .dic ファイルでは正しいスペルが「thesis」であるため、isExist は false と同じです。.lower() を使用して適切な名前を入力しても、isExist は false になります。

これを解決するのを手伝ってもらえますか?

4

2 に答える 2

4

Hunspell は大文字と小文字を区別しないスペル チェックをサポートしていないように見えるため、アルゴリズムを少し変更することを検討してください。

を考えるとTHesis、次を試すことができます:

bool isExist = false;

using (Hunspell english = new Hunspell("en_US.aff", "en_US.dic"))
{
    TextInfo textInfo = new CultureInfo("en-US",false).TextInfo;
    isExist =      english.Spell("THesis") 
                 | english.Spell(textInfo.ToLower("THesis") 
                 | english.Spell(textInfo.ToUpper("THesis")) 
                 | english.Spell(textInfo.ToTitleCase("THesis"))
}

これは、"THESIS"、"THESIS"、"THESIS"、"THESIS" を論理的にチェックし、論理 OR 演算子のおかげで、これらのスペルのいずれかが有効な場合に true を返します。

についても同様にcanada、このToTitleCase()メソッドは少なくとも一致を保証するため、これは機能します。

これは、ほとんどの単語 (すべて大文字の頭字語を含む) で機能するはずです。

于 2013-07-26T15:38:29.480 に答える