comp = StringComparison.OrdinalIgnoreCase
Console.WriteLine(" {0:G}: {1}", comp, s.Contains(sub1, comp))
这似乎就是这样。但是,我尝试了它并没有起作用。似乎s.Contains的唯一替代方法是将char()作为第一个参数。如果我想插入字符串作为第一个参数,那么我不能将第二个参数作为 StringComparison.OrdinalIgnoreCase。
我从https://msdn.microsoft.com/en-us/library/dy85x1sa(v=vs.110).aspx
获得了摘录答案 0 :(得分:3)
您可以使用IndexOf功能。
Console.WriteLine(s.IndexOf(sub1, 0, StringComparison. OrdinalIgnoreCase) > -1)
以上片段根据s是否包含sub1打印true或false。
或者,如果你想使用contains,你可以使用ToUpper或ToLower,如下所示......
Console.WriteLine(" {0:G}: {1}", comp, s.ToUpper().Contains(sub1.ToUpper()))
您提供的相关链接向您展示了如何为字符串创建自定义扩展程序。他还提供了用于创建自定义扩展的代码,如果您观察过,该方法将在内部使用IndexOf。
答案 1 :(得分:1)
试试这个:
s.ToLowerInvariant().Contains(sub1.ToLowerInvariant())
您在问题中指向的链接定义了以下扩展方法:
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()>
Public Function Contains(str As String, substring As String,
comp As StringComparison) As Boolean
If substring Is Nothing Then
Throw New ArgumentNullException("substring",
"substring cannot be null.")
Else If Not [Enum].IsDefined(GetType(StringComparison), comp)
Throw New ArgumentException("comp is not a member of StringComparison",
"comp")
End If
Return str.IndexOf(substring, comp) >= 0
End Function
End Module
除非您执行此操作,否则您对s.Contains(sub1, comp)
的调用将无效。