【问题标题】:How can I check if a string given is a real word?如何检查给定的字符串是否是真实单词?
【发布时间】:2017-07-03 02:51:41
【问题描述】:

我正在制作一个在 Visual Basic 中解决字谜的程序。如何检查字谜求解器给出的字符串是否是真实单词?我知道我必须访问某种字典,但我不知道该怎么做?

我需要一个检查单词以返回真/假布尔值的函数。这可能吗?

我在微软的 VS2015 中使用 Visual Basic。

【问题讨论】:

  • 这当然是可能的,但鉴于您尚未说明到目前为止您已尝试过什么,甚至字典将采用什么格式,因此很难为您提供帮助。
  • @Carcigenicate 到目前为止,我已经获得了生成随机字母字符串的代码(见下文)但是我不知道字典在 Visual Basic 中是如何工作的,所以这也是我所要求的帮助。你会推荐什么格式?
  • Dim lettersgiven() As Char = {"a"c, "b"c, "d"c, "e"c, "f"c} Dim results As New List(Of String) For start As Integer = 0 To lettersgiven.Length - 1 Dim usedindices As New List(Of Integer) For j As Integer = 1 To lettersgiven.Length Dim i As Integer = start While usedindices.Contains(i) i = (i + 1) Mod lettersgiven.Length End While usedindices.Add(i) Next Dim sb As New System.Text.StringBuilder() For Each i As Integer In usedindices sb.Append(lettersgiven(i)) Next If LookupDictionary(sb.ToString()) Then results.Add(sb.ToString()) Next
  • 你有没有想过向一些免费的字典 API 发出请求?
  • stackoverflow.com/q/2213607/1043824 给出了一个包含很多单词的文件。您可以搜索它以检查是否存在。在平面文件中搜索很困难。你可能想把它放在一个数据库中,然后用 sql 搜索它。打一个 api 是个好主意,但我想它已经超过了高水位线。

标签: vb.net anagram


【解决方案1】:

Hunspell 非常易于使用。

  • 通过 Nuget 安装 .net-library(在 Visual Studio 中打开您的项目,然后 > Extras > Nuget-Package-Manager -> Console,输入 Install-Package NHunspell
  • 下载 .aiff 和 .dic 文件,参见 Hunspell 项目页面上的词典链接。在您的项目中包含这些文件或使用绝对路径。

示例代码:

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    Using h As New NHunspell.Hunspell(
        "...path ...\en_US.aff",
        "...path ...\en_US.dic")
        Me.TextBox1.BackColor = If(h.Spell(Me.TextBox1.Text),
            Color.PaleGreen, Color.PeachPuff)
    End Using
End Sub

Hunspell

.net library NHunspell

NHunspell C# Code Samples

【讨论】:

    【解决方案2】:

    如果您使用的是 WPF,那么检查文本框中的单词是否可以通过检查它是否有拼写错误来完成。

    Public Function WordOk(Word As String) As Boolean
        return TextBox1.GetNextSpellingErrorCharacterIndex(0, Windows.Documents.LogicalDirection.Forward) < 0 
    End Function
    

    如果您使用的是 Windows 窗体,那么您可以创建一个“用户控件 (WPF)”来执行相同的操作,尽管在这里解释如何执行此操作有点棘手。

    (可能有比我展示的更好的测试。我对 WPF 并不太熟悉)

    【讨论】:

      猜你喜欢
      • 2012-07-21
      • 1970-01-01
      • 2013-03-09
      • 2016-02-23
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多