无论如何在运行时使用VB.NET中的LIKE运算符作为区分大小写或不敏感?例如,使用标志进行区分大小写或不区分大小写的比较。
显然,这可以通过简单地将它们转换为小写并强制应用到Option Compare Binary
来完成,但也许有更好的方法可以做到这一点?
答案 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
,则可以提供两个安全的课程。
也许最好的选择是学习正则表达式; - )