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

dauxcl2d  于 2023-06-25  发布在  .NET
关注(0)|答案(5)|浏览(212)

我在字符串数组上使用Array.Contains方法。我怎样才能使它不区分大小写呢?

ct2axkht

ct2axkht1#

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

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

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

nsc4cvqm2#

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

  1. if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
  2. {}
  1. array.Contains()是一个LINQ扩展方法,因此标准只能在.NET 3.5或更高版本中工作,需要:
    using System;
    using System.Linq;
    1.但是:在.NET 2.0中,简单的Contains()方法(不考虑大小写不敏感)至少可以像下面这样,带有强制转换:
    if ( ((IList<string>)mydotNet2Array).Contains(“str”) ) {}
    由于Contains()方法是IList接口的一部分,因此它不仅适用于数组,还适用于列表等。
qyuhtwio

qyuhtwio3#

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

yptwkmov4#

实现一个考虑大小写不敏感性的自定义IEqualityComparer
查看this。所以(理论上)你所要做的就是:

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

nhjlsmyf5#

从PowerShell的Angular 来看,我喜欢让每个人都能轻松阅读,所以:

  1. $data = @('Zero','One','Two','Three')
  2. $data -contains 'three'

将执行不区分大小写的检查,但

  1. $data -ccontains 'three'

将区分大小写。希望能帮上忙。

相关问题