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 🙂

También te podría gustar...

1 respuesta

  1. Felix Manuel dice:

    Excelente, necesitaba saber eso.

Escribeme un comentario

Tu dirección de correo electrónico no será publicada.