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