无论如何在运行时使用 VB.NET 中的 LIKE 运算符区分大小写或不区分大小写?例如,使用标志进行区分大小写或不区分大小写的比较。
显然,这可以通过简单地将它们转换为小写并强制应用程序来完成,Option Compare Binary
但也许有更好的方法来做到这一点?
无论如何在运行时使用 VB.NET 中的 LIKE 运算符区分大小写或不区分大小写?例如,使用标志进行区分大小写或不区分大小写的比较。
显然,这可以通过简单地将它们转换为小写并强制应用程序来完成,Option Compare Binary
但也许有更好的方法来做到这一点?
我不这么认为。但是,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
相当于#
. 您也必须将其包装起来^
并$
实现等效性。正则表达式功能更强大,可以满足您的需求。
Imports System.Text.RegularExpressions
如果您打算大量使用它们,您可能应该添加它们。它们也可以被编译和重用以提高效率。
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
为了安全起见,您可以提供两个类。
也许最好的选择是学习正则表达式;-)