案例(in)与VB.NET LIKE运算符在运行时的敏感比较(没有Option Compare)

时间:2011-06-24 23:28:19

标签: vb.net comparison case-sensitive vb-like-operator

无论如何在运行时使用VB.NET中的LIKE运算符作为区分大小写或不敏感?例如,使用标志进行区分大小写或不区分大小写的比较。

显然,这可以通过简单地将它们转换为小写并强制应用到Option Compare Binary来完成,但也许有更好的方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

我不这么认为。但是,如果不区分大小写,那么您可能不应该使用Like运算符 - 而是使用正则表达式。

Dim re As New System.Text.RegularExpressions.Regex("^.+ough$", System.Text.RegularExpressions.RegexOptions.IgnoreCase)

re.IsMatch("rough") ' True
re.IsMatch("tough") ' True
re.IsMatch("rOUGH") ' True
re.IsMatch("ough")  ' False

需要学习很多内容,但基本上.相当于?.*相当于*,而\d相当于# 1}}。您必须将其包含在^$中以获得相同的效果。正则表达式功能更强大,可以满足您的需求。

如果您计划使用它们,您应该添加Imports System.Text.RegularExpressions。它们也可以编译和重用,以提高效率。

答案 1 :(得分:0)

您可以提供自定义类,以确保即使默认设置为Compare Binary(区分大小写),也会获得不区分大小写的比较。您可以在代码文件中指定Option Compare

Option Compare Text

Public Class CaseInsensitiveLikeOperator
    Public Shared Function IsLike(str As String, pattern As String) As Boolean
        Return str Like pattern
    End Function
End Class

现在可行:

Dim isSame = CaseInsensitiveLikeOperator.IsLike("foo", "Fo?") ' True

如果您的默认值为Option Compare Text,则可以提供两个安全的课程。

也许最好的选择是学习正则表达式; - )