VB.NET 使用行部分匹配

VB.NET using row partial match

当我在第一个文本框中写下单词 (size) 时

我的字典应用了访问数据库中的这一行:

然后在第二个文本框中写入(large-big-huge)

但我正在尝试做相反的事情,例如搜索(大)

程序在第二个文本框中给出(大小)

但我必须写 (large-big-huge) 来应用前一行

如何使用带有(-)标记的数据库的部分匹配?

函数代码:

    Function argetword(ByVal content As String) As String
    Try
        Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Words]", connectionString)
            Using tbl As New DataTable
                If adp.Fill(tbl) > 0 Then
                    For Each row As DataRow In tbl.Rows
                        content = System.Text.RegularExpressions.Regex.Replace(content, row.Item("values"), row.Item("idom"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
                    Next
                End If
            End Using
        End Using
        Return content
    Catch ex As Exception
        MsgBox(ex.Message)
        Return String.Empty
    End Try
End Function

翻译按钮代码:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        TextBox2.Text = argetword(TextBox1.Text)

补充信息:

编辑代码:

    Function argetword(ByVal content As String) As String
    Try
        Using adp As New OleDb.OleDbDataAdapter("SELECT English FROM [Words] WHERE Arabic LIKE '%" & content & "%'", connectionString)
            Using tbl As New DataTable
                If adp.Fill(tbl) > 0 Then
                    For Each row As DataRow In tbl.Rows
                        content = System.Text.RegularExpressions.Regex.Replace(content, row.Item("Arabic"), row.Item("English"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
                    Next
                End If
            End Using
        End Using
        Return content
    Catch ex As Exception
        MsgBox(ex.Message)
        Return String.Empty
    End Try
End Function

数据库图片:

错误消息的快照:

您似乎获得了所有值,然后遍历每个值以检查一列是否与输入相匹配 -- 对于您正在尝试做的事情(无论如何我认为)这似乎不必要地复杂。

为什么不更改 select 声明 -

"SELECT values FROM Words WHERE idom = '" & content & "'"

然后反过来-

"SELECT idom FROM Words WHERE values LIKE '*" & content & "*'"

"Like"关键字returns任何包含内容的值,百分号表示单词前后可以有任何内容,它仍然匹配

如果您打算按现在的方式进行操作,则可以使用 string.Contains 函数查看是否在任一列中找到内容。

If row.item("values").contains(content) orelse row.item("idom").contains(content)

等等