如何检查一个字符串是否包含不敏感的另一个案例?

时间:2016-07-03 06:34:44

标签: vb.net

  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

获得了摘录

2 个答案:

答案 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。

Source

答案 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)的调用将无效。