63

文字列の .net 配列があるとします。

string[] strings = new string[] { "AbC", "123", "Xyz", "321" };

文字列の配列に「ABC」が含まれているかどうかを確認したい場合は、次のように書くことができます

strings.Contains("ABC");

ただし、文字列の大文字の値に「ABC」が含まれている場合に true を返す関数が必要だとします。配列全体を大文字にすることもできますが、.Containsメソッドには比較を指定するためのオーバーロードがいくつかあるようですが、構文に混乱しています。

IEnumerable<string>.Contains()このロジックを実装するメソッドを使用するにはどうすればよいですか?

4

3 に答える 3

128

オーバーロードされたEnumerable.Containsメソッドを使用して、等式比較子を受け入れます。

strings.Contains("ABC", StringComparer.InvariantCultureIgnoreCase)

また、ボックス内に使用できる文字列比較機能があります。

于 2013-02-08T21:49:13.523 に答える
2

私は個人的に、この人の が好きです。これは、次のLambdaComparerようなものに非常に役立ちます。

IEqualityComparer とラムダ式を使用したコレクションの LINQ

使用例:

var comparer = new LambdaComparer<string>(
    (lhs, rhs) => lhs.Equals(rhs, StringComparison.InvariantCultureIgnoreCase));

var seq = new[]{"a","b","c","d","e"};

Debug.Assert(seq.Contains("A", comparer));
于 2013-02-08T21:54:42.587 に答える