VB.NET string.contains 使用通配符

时间:2021-07-08 06:13:55

标签: string vb.net contains

我注意到在 treeview items 内的循环中,当我使用 string.contains 方法与文本框并行输入搜索字符串以突出显示找到的 nondes 时,我不能使用任何通配符,如 * 或 % ...还有其他方法可以使用通配符吗?

我尝试过的是有多个文本框,例如。代码 string.contains(x) 或 string.contains(y) 中的 textbox_x、textbox_y 和多个 string.contains 但这显然不符合我的需求,因为用户可能想要使用多种通配符组合..

1 个答案:

答案 0 :(得分:0)

这是一个简单的函数,允许在任何位置使用*作为小丑
(使用正则表达式,这里也设置为不区分大小写)。

Public Shared Function TestSimplePattern(value As String, pattern As String) As Boolean
    If String.IsNullOrEmpty(value) Or String.IsNullOrEmpty(pattern) Then Return False
    Dim parts = pattern.Split("*")
    Dim rxPattern = String.Join(".*?", parts.Select(Function(item) Regex.Escape(item)).ToArray)
    rxPattern = "^" & rxPattern & "$"
    Return Regex.IsMatch(value, rxPattern, RegexOptions.IgnoreCase)
End Function

可以这样使用:

TestSimplePattern("VB.NET string.contains using wildcards", "*wildcards") ' true
TestSimplePattern("VB.NET string.contains using wildcards", "*string*using*") ' true
TestSimplePattern("VB.NET string.contains using wildcards", "*string*using") ' false