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?¿Cómo puedo hacer que Array.Contains distinga entre mayúsculas y minúsculas en una matriz de cadenas?
Respuesta
array.Contains("str", StringComparer.OrdinalIgnoreCase);
o dependiendo de la circunstancia específica, puede que prefiera:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true
Pero ¿no sería esto realizar una llamada ToLower costosa() en cada elemento en la lista? String.Equals con la sobrecarga de StringComparison sería más adecuado en este ejemplo. –
Implementar una costumbre IEqualityComparer que toma casos y la insensibilidad en cuenta.
Además, marque this fuera. De manera que (en teoría) todo lo que tendría que hacer es:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
¿Por qué reinventar la rueda? –
Porque hasta hace 5 minutos no sabía que existía un StringComparer. :) – Kon
Algunas notas importantes de mi lado, o al menos poner algo de información distribuida en un lugar- en relación con la punta de arriba con una 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 de
Contains()
(sin tomar caso insensibilidad en cuenta) es al menos posible de esta manera, con un reparto:if (((IList<string>)mydotNet2Array).Contains(“str”)) {}
Adición a 1 .: Para la razón dada anteriormente, los
StringComparer
en 1. sólo 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 sólo funcionan con matrices, sino que también funciona con listas :-)
- 1. Hacer que Entity Framework no distinga entre mayúsculas y minúsculas
- 2. ¿Cómo hacer que Regex no distinga entre mayúsculas y minúsculas?
- 3. Cómo configurar MySQL para que distinga entre mayúsculas y minúsculas
- 4. ¿Cómo puedo hacer que la búsqueda de la tecla hash no distinga entre mayúsculas y minúsculas?
- 5. ¿Cómo puedo hacer que mi servidor local distinga entre mayúsculas y minúsculas?
- 6. ¿Hay alguna manera en Oracle de hacer que una columna no distinga entre mayúsculas y minúsculas?
- 7. ¿Puedo hacer que Subversion + TortoiseSVN no distinga entre mayúsculas y minúsculas para Windows?
- 8. ¿Cómo configurar Sqlite3 para que no distinga entre mayúsculas y minúsculas cuando se compara una cadena?
- 9. Hacer que el elemento ArrayList no distinga entre mayúsculas y minúsculas
- 10. ¿Cómo puedo hacer una comparación de cadenas insensible a mayúsculas y minúsculas?
- 11. getOptions Perl() entre mayúsculas y minúsculas
- 12. ¿Es posible que lxml funcione de manera que no distinga entre mayúsculas y minúsculas?
- 13. Forzar consulta de T-SQL para que distinga entre mayúsculas y minúsculas en MS
- 14. ¿Es posible que BeautifulSoup funcione de manera que no distinga entre mayúsculas y minúsculas?
- 15. ¿Cómo cambio SQL Server 2005 para que distinga entre mayúsculas y minúsculas?
- 16. ¿Cómo convierto cadenas entre mayúsculas y minúsculas en Java?
- 17. Cómo hacer una distinción entre mayúsculas y minúsculas GROUP BY?
- 18. ¿Se puede hacer que el glob() de PHP busque archivos de manera que no distinga entre mayúsculas y minúsculas?
- 19. Selección de cadenas y sensibilidad entre mayúsculas y minúsculas
- 20. NSPredicate insensible a las mayúsculas y minúsculas para cadenas de una matriz?
- 21. ¿Puedo forzar la distinción entre mayúsculas y minúsculas del nombre de tabla MySql en sistemas de archivos que no distinguen entre mayúsculas y minúsculas?
- 22. RegularExpressionAttribute - ¿Cómo hacer que no distinga entre mayúsculas y minúsculas para la validación del lado del cliente?
- 23. ¿Puedo hacer que un Apache que se ejecute en Windows distingue entre mayúsculas y minúsculas?
- 24. ¿Hace que mysql sea sensible a mayúsculas y minúsculas?
- 25. Comparación de cadenas insensibles a mayúsculas o minúsculas
- 26. Cómo agregar una opción entre mayúsculas y minúsculas a Array.indexOf
- 27. NSMutableArray clasificación - entre mayúsculas y minúsculas
- 28. escritura entre mayúsculas y minúsculas versión
- 29. ¿Cómo se configuran las cadenas en mayúsculas/minúsculas en Unicode?
- 30. ¿Cómo obtener cadenas aleatorias con espacios y mayúsculas y minúsculas?
Según http://msdn.microsoft.com/en-us/library/dd465121.aspx, "la cultura invariante tiene muy pocas propiedades que la hagan útil para la comparación". En casi todos los casos en los que no desea una comparación específica de cultura ('CurrentCulture'), debe usar' Ordinal' en lugar de 'InvariantCulture'. – bdukes
@bdukes Eso es una afirmación demasiado fuerte. Hay razones válidas para usar 'InvariantCulture'. El uso de cualquiera de las tres opciones anteriores depende de las circunstancias. No me opongo a su reordenamiento, pero eliminaré el comentario "probablemente no". Ya está claro en la respuesta que debes elegir el que te funcione en la situación actual. –
Me tomó un momento darme cuenta de que Contiene es un método de extensión en System.Linq. –