如何使Array.Contains在string数组上不区分大小写?
我在string数组上使用Array.Contains
方法。 我怎样才能使这个不区分大小写?
array.Contains("str", StringComparer.OrdinalIgnoreCase);
或者根据具体情况,您可能更喜欢:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase); array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
从我的一些重要笔记,或者至less把一些分布式信息放在一个地方 – 关于上面的提示与StringComparer像在:
if (array.Contains("str", StringComparer.OrdinalIgnoreCase)) {}
-
array.Contains()
是一个LINQ扩展方法,因此只能使用.NET 3.5或更高版本的标准工作。 -
但是:在.NET 2.0中,简单的
Contains()
方法(不考虑大小写不敏感)至less可以这样用cast:if ( ((IList<string>)mydotNet2Array).Contains(“str”) ) {}
-
除1之外:出于上述原因,1.中的
StringComparer
仅适用于以下名称空间包含(使用.NET 3.5进行testing):using System;
using System.Linq;
-
除2之外:
Contains()
方法不仅适用于数组,它也适用于列表:-)
实现一个自定义的IEqualityComparer ,考虑到不区分大小写。
另外,请检查这一点 。 那么(理论上)你所要做的就是:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true