C#检查一个单词是否在英文字典中?

时间:2016-07-16 22:35:44

标签: c# dictionary spell-checking

我正在尝试查看单词列表,并确定每个单词是否为有效的英语单词(对于拼字游戏)。我不确定如何处理这个问题,我是否必须找到所有英文单词的文本文件,然后使用文件读取和解析方法手动构建像trie或hashmap这样的数据结构 - 或者我能找到那些预制在某个地方?最简单的方法是什么?

2 个答案:

答案 0 :(得分:6)

您可以使用NetSpell库进行检查。可以使用以下命令通过Nuget Console轻松安装

PM> Install-Package NetSpell

然后,循环显示单词并使用库

进行检查
NetSpell.SpellChecker.Dictionary.WordDictionary oDict = new NetSpell.SpellChecker.Dictionary.WordDictionary(); 

oDict.DictionaryFile = "en-US.dic"; 
oDict.Initialize();
string wordToCheck = "door";
NetSpell.SpellChecker.Spelling oSpell = new NetSpell.SpellChecker.Spelling(); 

oSpell.Dictionary = oDict; 
if(!oSpell.TestWord(wordToCheck))
{
    //Word does not exist in dictionary
    ...
}

答案 1 :(得分:1)

由于您正在寻找有效的Scrabble单词,因此有一些API可以验证Scrabble的单词。如果你使用任何不符合预期目的的东西,那么它可能会遗漏一些有效的词。

以下为one,此处为another,此处为列出可用API的separate question

因此,除了粘贴链接之外,我还可以添加一些值,我建议将其包装在您自己的界面中,以便在一个或另一个不可用的情况下将它们交换掉(因为它们都是免费服务。)< / p>

public interface IScrabbleWordValidator
{
    bool IsValidScrabbleWord(string word);
}

确保您的代码仅依赖于该接口,然后编写它的实现,调用您使用的任何API。