StringComparison.OrdinalIgnoreCase – что делает и когда использовать?
StringComparison.OrdinalIgnoreCase — это флаг, который используется в методах сравнения строк в C#. Он позволяет игнорировать регистр букв при сравнении, используя «Ordinal» (побайтовое) сравнение.
Применение
Используется в методах, работающих со строками, таких как:
string.Equals()string.Compare()string.IndexOf()string.Contains()string.StartsWith()string.EndsWith()
Примеры использования
1. string.Equals() – сравнение строк без учета регистра
csharpКопироватьРедактироватьstring str1 = "Hello";
string str2 = "HELLO";
bool result = string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase);
Console.WriteLine(result); // true
✅ Почему true?
Метод Equals() сравнивает строки без учета регистра (Hello и HELLO считаются равными).
2. string.IndexOf() – поиск подстроки без учета регистра
csharpКопироватьРедактироватьstring text = "C# is Awesome!";
int index = text.IndexOf("awesome", StringComparison.OrdinalIgnoreCase);
Console.WriteLine(index); // 6
✅ Почему 6?
awesomeв нижнем регистре найдено в"C# is Awesome!", потому что сравнение игнорирует регистр.
3. string.StartsWith() и string.EndsWith()
csharpКопироватьРедактироватьstring filename = "Report.PDF";
bool startsWith = filename.StartsWith("report", StringComparison.OrdinalIgnoreCase);
bool endsWith = filename.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase);
Console.WriteLine(startsWith); // true
Console.WriteLine(endsWith); // true
✅ Почему true?
"Report.PDF"начинается с"report"и заканчивается на".pdf", даже если регистр букв разный.
Чем OrdinalIgnoreCase отличается от других вариантов?
| Вариант | Описание |
|---|---|
Ordinal | Побайтовое сравнение (учитывает регистр). |
OrdinalIgnoreCase | Побайтовое сравнение (игнорирует регистр). |
CurrentCulture | Учитывает языковые особенности текущей культуры. |
CurrentCultureIgnoreCase | Игнорирует регистр с учетом культуры системы. |
InvariantCulture | Языково-независимое сравнение. |
InvariantCultureIgnoreCase | Игнорирует регистр без учета культуры. |
Когда использовать OrdinalIgnoreCase?
✅ Используйте OrdinalIgnoreCase, если:
- Нужно быстрое и точное сравнение строк (например, в конфигурациях, идентификаторах, именах файлов).
- Сравниваются английские слова без учёта локали.
❌ Не используйте OrdinalIgnoreCase, если:
- Нужно учитывать языковые особенности (например,
iиİв турецком языке). В этом случае лучшеCurrentCultureIgnoreCase.
Вывод
📌 StringComparison.OrdinalIgnoreCase – самый быстрый и надежный способ сравнения строк без учета регистра, если не нужно учитывать языковую культуру. 🚀

Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.