.net - resueltos - ¿Cómo puedo hacer que Array.Contains distinga entre mayúsculas y minúsculas en una matriz de cadenas?
funciones de cadenas de caracteres en c++ (4)
Estoy usando el método Array.Contains
en una matriz de cadenas. ¿Cómo puedo hacer que no distinga entre mayúsculas y minúsculas?
Algunas notas importantes de mi parte, o al menos poner alguna información distribuida en un solo lugar, con respecto a la sugerencia anterior con un StringComparer como en:
if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
array.Contains()
es un método de extensión LINQ y, por lo tanto, funciona de manera estándar solo con .NET 3.5 o superior.Pero: en .NET 2.0 el método simple
Contains()
(sin tener en cuenta la insensibilidad de las mayúsculas) es al menos posible así, con un molde:if ( ((IList<string>)mydotNet2Array).Contains(“str”) ) {}
Además de 1 .: Por la razón dada anteriormente,
StringComparer
en 1. solo funciona con las siguientes inclusiones de espacio de nombres (probado con .NET 3.5):using System;
using System.Linq;
Además de 2 .: El método
Contains()
no solo funciona con matrices, también funciona con listas :-)
Implemente un IEqualityComparer personalizado que tenga en cuenta la insensibilidad de mayúsculas y minúsculas.
Además, mira this . Entonces, en teoría, todo lo que tendrías que hacer es:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
array.Contains("str", StringComparer.OrdinalIgnoreCase);
O dependiendo de la circunstancia específica, es posible que prefiera:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true