我在字符串数组上使用Array.Contains
方法。如何使该案例不敏感?
答案 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))
{}
array.Contains()
是LINQ扩展方法,因此仅适用于.NET 3.5或更高版本的标准,需要:
using System;
using System.Linq;
但是:在.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