微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

visual basic:用户在文本后输入一个 % 符号

如何解决visual basic:用户在文本后输入一个 % 符号

Private Sub btnBillSearch_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnBillSearch.Click

        If Me.txbBILL_NR.Text = "" Or Me.txbBILL_NR.TextLength >= 4 Then
            Try
                Search()

                If Me.bsBillGrid.Current IsNot nothing Then
                    Me.dgvBill.Focus()
                End If
            Catch ex As Exception
                Utility.ExceptionManager.HandleException(ex)
            End Try
        Else
            MessageBox.Show("enter at least 4 numbers")
        End If
    End Sub

我的应用中有这种搜索按钮的方法。 所以,我已经写了 If 条件,用户输入最少字符数是 4 来选择条目。

我需要对 % 符号再进行一次验证。我想通了,这有点像 startWidth(),但我不明白我是如何得到这些情况的:

我考虑使用 startWith/endWith 或正则表达式。 任何人都可以给我一些建议在哪里看。

  1. 用户在 txbBILL_NR 后添加“%”符号 - 系统不会在后台添加额外的“%”, 找到并反映在列表中的 txbBILL_NR 具有相同的部件号。

  2. 用户没有在 txbBILL_NR 后添加“%”符号——系统在后台添加一个额外的“%”, txbBILL_NR 具有相同的编号。零件被找到并列出。 “%”字符不需要由用户表示;

3.user 在 txbBILL_NR 的开头或中间添加了“%”符号——系统不会在后台添加额外的“%”, 找到具有相同零件编号的 txbBILL_NR 并将其反映在列表中(无需更改);

  1. “%”系统仅当用户在 txbBILL_NR 字段中输入至少 4 个字符时才需要标记(假设发票编号不能短于 4 个字符。

  2. 如果用户输入了至少4个字符(无论是起始字符还是中间字符),并且在这些符号的开头或中间添加了“%”,系统不会额外添加“%” “在后台 找到具有相同部分(符号)部分的发票并反映在列表中。

解决方法

'Get raw user entry.
Dim searchText = txbBILL_NR.Text

'Get user entry without wildcards.
Dim cleanSearchText = searchText.Replace("%",String.Empty)

If cleanSearchText.Length = 0 OrElse cleanSearchText.Length >= 4 Then
    If searchText = cleanSearchText Then
        'There are no wildcards so append one.
        searchText &= "%"
    End If

    'Use searchText here.
End If
,

我认为此功能符合您的要求。

Private Function SearchCriterium(ByVal Crit As String) As String
    ' 295
    
    Const Mark  As String = "%"
    Dim Fun     As String           ' function return value
    
    Fun = Crit
    Do While (Len(Fun) >= 4) And (Right(Fun,1) = Mark)
        Fun = Left(Fun,Len(Fun) - 1)
    Loop
    If Len(Fun) < 4 Then
        MsgBox "Enter at least 4 characters.",_
                vbExclamation,"Invalid search crterium"
         SearchCriterium = Crit
    Else
        If InStr(Fun,Mark) = 0 Then Fun = Fun & Mark
    End If
    SearchCriterium = Replace(Fun,Mark,"*")
End Function

观察它用 VBA 的通配符 * 替换了 % 符号。如果您当时不需要该功能,可以将其删除。

该函数删除任何现有的尾随占位符,然后在字符串中的其他地方不存在时添加一个。这是我运行的测试列表。

Private Sub Test_SearchCriterium()
    Debug.Print SearchCriterium("Item")
    Debug.Print SearchCriterium("It%em")
    Debug.Print SearchCriterium("%Item")
    Debug.Print SearchCriterium("Ite%")
    Debug.Print SearchCriterium("It%%")
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。