Сравнение строк по умолчанию в C #. Не различайте верхний и нижний регистр

Неоднократно я должен сравнивать строки, и по умолчанию C # чувствителен к регистру, так что следующее не работает

string nombre = "AlgunaCosa";
nombre.Contains("alguna");

В конце я всегда заканчиваю сравнением строчных букв

nombre.ToLower().Contains("alguna");

Существует ли директива, чтобы во всем мире сравнение строк в C # не учитывало прописные и строчные буквы?

3
задан 28.11.2019, 11:22
1 ответ

Не существуют глобальные директивные органы, которые управляли бы о ней comparaciГіn цепей, но у тебя есть несколько выборов. Я предлагаю какие-то тебе:

  • Использовать IndexOf с нею opciГіn StringComparison.OrdinalIgnoreCase:

    bool contiene= nombre.IndexOf("alguna", StringComparison.OrdinalIgnoreCase) >= 0;
    
  • Создавать один mГ©todo extensiГіn для Contains:

    public static bool ContainsIC(this string cadena, string cadenaBusqueda)
    {
        return cadena.ToLower().Contains(cadenaBusqueda.ToLower());
    }
    

    Использовал:

    string nombre = "AlgunaCosa";
    var contiene = nombre.ContainsIC("alguna");
    
  • Использовать string.Compare(string,string,bool):

    var contiene=string.Compare(nombre, "alguna", true)>-1;
    

, исследовав немного, кажется, что не рекомендует использовать ToLower или ToUpper ввиду того, что в зависимости от языка он может давать неожиданные результаты, ademГЎs, которого у него есть sobrecoste создания новой цепи. AsГ - что podrГ-хозяева изменять mГ©todo extensiГіn предложенный ранее на следующего:

public static bool Contains(this string fuente, string aComparar, StringComparison comp)
{
    return fuente?.IndexOf(aComparar, comp) >= 0;
}

, Чтобы использовать null check ?, мы должны будем быть используя C# 6 или начальник. Если бы это не было так, мы можем менять cГіdigo на

if (source == null) return false;
return source.IndexOf(toCheck, comp) >= 0;

Способ использования:

bool contiene = nombre.Contains("alguna", StringComparison.OrdinalIgnoreCase);

Восток Гєltimo cГіdigo estГЎ взятый из https://stackoverflow.com / в / 444818 /

6
ответ дан 01.12.2019, 10:41