如何在字符串数组上使Array.Contains不区分大小写?

时间:2009-06-04 19:40:09

标签: .net

我在字符串数组上使用Array.Contains方法。如何使该案例不敏感?

4 个答案:

答案 0 :(得分:281)

array.Contains("str", StringComparer.OrdinalIgnoreCase);

或者根据具体情况,您可能更喜欢:

array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);

答案 1 :(得分:7)

我身边的一些重要说明,或至少在一个地方放置一些分布式信息 - 关于上面的提示,使用如下的StringComparer:

if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
  1. array.Contains()是LINQ扩展方法,因此仅适用于.NET 3.5或更高版本的标准,需要:
    using System;
    using System.Linq;

  2. 但是:在.NET 2.0中,简单的Contains()方法(不考虑不区分大小写)至少可以像这样使用强制转换:

    if ( ((IList<string>)mydotNet2Array).Contains(“str”) ) {}

    由于Contains()方法是IList接口的一部分,因此不仅适用于数组,还适用于列表等。

答案 2 :(得分:2)

实施一个不考虑大小写不敏感的自定义IEqualityComparer

此外,请检查this。那么(理论上)你所要做的就是:

myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))

答案 3 :(得分:0)

new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true