¿Cómo puedo hacer una matriz?Contiene mayúsculas y minúsculas en una matriz de cadenas?


Estoy usando el método Array.Contains en una matriz de cadenas. ¿Cómo puedo hacer que sea insensible a mayúsculas y minúsculas?

 140
Author: Dirk Vollmar, 2009-06-04

4 answers

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

O dependiendo de la circunstancia específica, usted podría preferir:

array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
 250
Author: Mehrdad Afshari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-25 21:09:20

Algunas notas importantes de mi lado, o al menos poner algo de información distribuida en un solo lugar - en relación con la punta de arriba con un comparador de cadenas como en:

if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
  1. array.Contains() es un método de extensión LINQ y por lo tanto funciona por estándar solo con.NET 3.5 o superior.

  2. Pero: en. NET 2.0 el método simple Contains() (sin tener en cuenta la insensibilidad a mayúsculas y minúsculas) es al menos posible de esta manera, con un molde:

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

  3. Adición a 1.: Para la razón dada anteriormente, el StringComparer en 1. solo funciona con las siguientes inclusiones de espacio de nombres (probado con. NET 3.5):

    using System;

    using System.Linq;

  4. Adición a 2.: El método Contains() no solo funciona con matrices, también funciona con listas :-)

 7
Author: Philm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-24 18:54:26
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true
 1
Author: Darin Dimitrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 19:44:04

Implementa un IEqualityComparer personalizado que tenga en cuenta la insensibilidad a mayúsculas y minúsculas.

Además, marque this out. Entonces (en teoría) todo lo que tienes que hacer es:

myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
 1
Author: Kon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:15