2016-07-03 1 views
0
comp = StringComparison.OrdinalIgnoreCase 
    Console.WriteLine(" {0:G}: {1}", comp, s.Contains(sub1, comp)) 

これは方法のようです。しかし、私は試して、それは動作しません。 s.Containsの唯一のaltenativeが第一引数としてchar()を取るようです。文字列を最初の引数として挿入したい場合、2番目の引数をStringComparison.OrdinalIgnoreCaseとして持つことはできません。ある文字列に別の大文字小文字が区別されていないかどうかを確認するにはどうすればよいですか?

私はあなたがIndexOfメソッドの機能を使用することができますhttps://msdn.microsoft.com/en-us/library/dy85x1sa(v=vs.110).aspx

答えて

3

からスニペットを得ました。

Console.WriteLine(s.IndexOf(sub1, 0, StringComparison. OrdinalIgnoreCase) > -1) 

上記のsnippetは、sにsub1が含まれているかどうかによってtrueまたはfalseを表示します。また

、あなたが使用することを含まれたい場合は、以下に示すように、あなたがTOUPPERやTOLOWERを使用することができます...あなたが質問に与えた

Console.WriteLine(" {0:G}: {1}", comp, s.ToUpper().Contains(sub1.ToUpper())) 

リンク文字列にカスタム拡張を作成する方法を示します。また、カスタム拡張を作成するために使用しなければならないコードを渡しました。このメソッドは、あなたが観察した場合にIndexOfを内部的に使用します。

Source

+0

Hmmmですが、Microsoftのサンプルではstring.containsを使用できます。 –

+1

@JimThioいいえ、「カスタムメソッドを作成できます...」 –

1

この試してみてください。「あなたはs.Contains(sub1, comp)ウォンにこれはあなたの呼び出しを実装していない限り、

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.ToLowerInvariant().Contains(sub1.ToLowerInvariant()) 

を仕事。

+1

ところで、これらのテストは本当に冗長です。なぜなら、引数が悪いときに 'IndexOf'がすでに同じ例外をスローしているからです。 https://msdn.microsoft.com/en-us/library/ms224425%28v=vs.110%29.aspxを参照してください。 –

関連する問題