VB.NET中String.Contains调用相等比较器的正确语法
VB.NET中String.Contains使用忽略大小写比较的正确方法
核心问题原因
早期.NET Framework版本的String.Contains方法没有直接支持StringComparison枚举的重载,这就是你传入StringComparison.OrdinalIgnoreCase时IDE报错的原因;而EndsWith/StartsWith天生带有该重载,所以可以正常使用。另外,你尝试的comparer:=StringComparer.InvariantCultureIgnoreCase会运行报错,是因为Contains从未提供接受IEqualityComparer(Of String)类型参数的重载,参数类型不匹配导致异常。
两种可行解决方案
方案1:兼容所有.NET版本(推荐旧项目使用)
借助String.IndexOf方法结合StringComparison枚举判断,返回值≥0即表示包含目标字符串:Dim sourceStr As String = "Test String" Dim targetStr As String = "test" If sourceStr.IndexOf(targetStr, StringComparison.OrdinalIgnoreCase) >= 0 Then ' 执行包含匹配后的逻辑 End If方案2:适用于.NET Core 2.0+、.NET 5+、.NET Framework 4.8+
高版本框架中String.Contains新增了带StringComparison的重载,VB.NET中需指定参数名为comparisonType::Dim sourceStr As String = "Test String" Dim targetStr As String = "test" If sourceStr.Contains(targetStr, comparisonType:=StringComparison.OrdinalIgnoreCase) Then ' 执行包含匹配后的逻辑 End If
内容的提问来源于stack exchange,提问作者Daniel Santos
相关产品推荐
相关产品推荐

