Método Contains en C# sin ser case sensitive
por default cuando usamos el método contains en C# en un string para saber si contiene otro el método es case sensitive, es decir no encontrara el string «hola» dentro del string mensaje = «HOLA MUNDO».
es decir esto:
mensaje.Contains("hola")
nos regresara falso por estar en minúscula, para solucionar esto pueden usar el método:
mensaje.IndexOf(«hola», StringComparison.OrdinalIgnoreCase)
este nos nos regresara un valor númerico int que podemos fácilmente indicar que si el numero es mayor o igual a cero significa que si encontró la búsqueda no importando si son mayúsculas o minúsculas.
Pero en mi caso particular necesitaba que fuera forzosamente booleano porque lo usaria dentro de una expresion lambda asi que lo que hice y les recomiendo es sobrecargar el metodo. Para esto en su clase public y static donde almacenen sus propios metodos agreguenla asi:
// Extension, sobrecarga de Contains para que ano tome en cuenta mayusculas y minusculas public static bool Contains(this string fuente, string achecar, StringComparison comp) { return source.IndexOf(toCheck, comp) >= 0; }
despues solo agreguen arriba de donde vayan a usar el método sobrecargado la referencia a su namespace donde este su clase de métodos:
using Espaciodenombre.BlaBla
y así cuando usen el metodo Contains tendra una nueva sobrecarga que acepta los parametros que le dieron y no sera case sensitive.
mensaje.Contains("hola", StringComparison.OrdinalIgnoreCase)
Espero les ayude y aquí estoy para sus dudas 🙂
Excelente, necesitaba saber eso.