VB.NET使用行部分匹配

时间:2015-07-12 18:03:16

标签: vb.net dictionary row

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

我的字典从访问数据库应用此行:

enter image description here

并在第二个文本框中写下(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

数据库图片:

enter image description here

错误消息的快照:

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎你得到了所有的值,然后通过每个值来检查一列是否与输入相匹配 - 这似乎是不必要的复杂(我认为无论如何)你想要做的。

为什么不改变select语句 -

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

然后另一种方式 -

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

“Like”关键字返回包含内容的任何值,百分比符号表示该单词之前或之后可以有任何内容,但仍然匹配

如果您按照现在的方式设置它,可以使用string.Contains函数查看是否在任一列中找到了内容。

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