2013-07-10 34 views
56

次のように大文字小文字を区別しないようにするにはどうすればよいですか?String.Containsは大文字と小文字を区別しません。

myString1.Contains("AbC") 
+1

または[String.Contains](HTTPのMSDNの記事の複製:// MSDNを。 "参照:IndexOf" ... –

+0

VBには、VB.Netでの回答を求めている場合は、この質問は100%ではありません - VBでの質問.Netには、ここで使用できる 'LIKE'演算子のような、C#にはない機能があります。 – sloth

+0

彼は両方の言語にタグをつけているので、おそらく彼は解決法がどれであるか気にしないので、複製は完全にこの質問に答えます。とにかく、彼がonlt vb.netで質問を編集すると、自動的に再開キューに入ります。 – SysDragon

答えて

10
bool b = list.Contains("Hello", StringComparer.CurrentCultureIgnoreCase); 

[EDIT]拡張コード:

public static bool Contains(this string source, string cont 
                , StringComparison compare) 
{ 
    return source.IndexOf(cont, compare) >= 0; 
} 

これは:)を使用でき

+13

このメソッドはC# –

+1

には存在しません。これは質問の理由です...ありがとう@trippino – iGanja

+0

@trippinoは拡張コード – wudzik

39

を仕事ができる:

if (myString1.IndexOf("AbC", StringComparison.OrdinalIgnoreCase) >=0) { 
    //... 
} 

これは、任意の.NETバージョンで動作します。

+3

答えの2つのタイプミス、そうでなければ良い;-)それは(明らかに) 'StringComparison.OrdinalIgnoreCase' – andreas

110

あなたがこれを行うために、独自の拡張メソッドを作成することができます

public static bool Contains(this string source, string toCheck, StringComparison comp) 
    { 
    return source != null && toCheck != null && source.IndexOf(toCheck, comp) >= 0; 
    } 

そして呼び出す:

mystring.Contains(myStringToCheck, StringComparison.OrdinalIgnoreCase); 
+2

これはおそらく、拡張メソッドでラップすることによって最も良い答えです。 –

+6

@ムージュースはいそれはおなじみなので:http://stackoverflow.com/a/444818/447156 –

+4

私はあなたの頭文字+のようなフレームワークで何かとの完全一致以外の関数を呼び出すことをお勧めしますが含まれています。私はこのアプローチを数多くのものに使います。私の頭文字はPSなので、psContains、psStartsWith、psEndsWithなどがあります。私はそれが違うべきだと思う理由は、コードを読むだけで何をするのかを伝えることができるからです。また、署名が互換性がある場合、コンパイラはそれを好まないかもしれません。互換性が十分であれば、コンパイルによって拡張機能が有効かどうかを調べるのに役立たないでしょう。拡張機能はDotnetの本当の宝です。正しく使用されている場合: –

関連する問題