C# 检查一个词是否在英语词典中?
C# checking if a word is in an English dictionary?
我正在尝试浏览一个单词列表,并为每个单词确定它是否是一个有效的英语单词(对于拼字游戏)。我不确定如何处理这个问题,我是否必须去查找所有英文单词的文本文件,然后使用文件读取和解析方法手动构建数据结构,如 trie 或 hashmap - 或者我可以在某处找到那些预制的?最简单的方法是什么?
您可以使用 NetSpell 库进行检查。可以使用以下命令通过 Nuget 控制台轻松安装它
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
...
}
由于您正在专门寻找有效的拼字游戏单词,因此有一些 API 可以验证拼字游戏的单词。如果您使用的任何内容不是出于该预期目的,那么很可能会遗漏一些有效的词。
此处 one, here's another, and here's a separate question 列出了可用的 API。
除了粘贴链接之外,我还可以增加一些价值,我建议将其包装在您自己的界面中,以便您可以在其中一个或另一个不可用时将它们换掉(因为它们都是免费服务。 )
public interface IScrabbleWordValidator
{
bool IsValidScrabbleWord(string word);
}
确保您的代码只依赖于该接口,然后编写它的实现来调用您使用的任何 API。
我正在尝试浏览一个单词列表,并为每个单词确定它是否是一个有效的英语单词(对于拼字游戏)。我不确定如何处理这个问题,我是否必须去查找所有英文单词的文本文件,然后使用文件读取和解析方法手动构建数据结构,如 trie 或 hashmap - 或者我可以在某处找到那些预制的?最简单的方法是什么?
您可以使用 NetSpell 库进行检查。可以使用以下命令通过 Nuget 控制台轻松安装它
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
...
}
由于您正在专门寻找有效的拼字游戏单词,因此有一些 API 可以验证拼字游戏的单词。如果您使用的任何内容不是出于该预期目的,那么很可能会遗漏一些有效的词。
此处 one, here's another, and here's a separate question 列出了可用的 API。
除了粘贴链接之外,我还可以增加一些价值,我建议将其包装在您自己的界面中,以便您可以在其中一个或另一个不可用时将它们换掉(因为它们都是免费服务。 )
public interface IScrabbleWordValidator
{
bool IsValidScrabbleWord(string word);
}
确保您的代码只依赖于该接口,然后编写它的实现来调用您使用的任何 API。