単語が辞書に存在するかどうかをフィルタリングしてチェックするプログラムを作成しています。問題は、単語に繰り返し文字があるかどうかを知る方法です。
例えば:
string string1 = "sorrrrrrry";
その文字列は辞書に存在しませんが、繰り返しの r を削除すると「申し訳ありません」になります。
hunspell を使用して、単語が辞書に存在するかどうかを確認しています。解決策を教えてください。前もって感謝します
あなたの場合、あなたができることは次のとおりです。
正規表現(\w)\1+
(繰り返し文字に一致)を使用し、最初に$1$1
(2つの繰り返し一致した文字)と$1
string input = "sorrrrrrry";
Regex regex = new Regex(@"(\w)\1+");
string replacement = "$1$1";
string res = regex.Replace(input, replacement);
Console.WriteLine(res);
//will output => sorry
replacement = "$1";
res = regex.Replace(input, replacement);
Console.WriteLine(res);
//will output => sory
警告 これにより、いくつかの結果が得られる可能性がありますが、いくつかの制限があり、予期しない結果が生じる可能性があります。
いくつかのファジー論理法によって、どの単語が辞書に一致するかを推測することしかできず、複数が見つかった場合はリストが表示されます。
おそらく、スマートフォンのキーボードがどのようにあなたを助けようとしているのかご存知でしょう。
この方法は、後ではなく、多かれ少なかれ適切な方法です(入力中)。
しかし、後も可能ですが、より多くの努力が必要です。
辞書を Lucene.Net に保存し、その緩やかな一致機能を使用して単語を一致させることを検討することをお勧めします。