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
– самый быстрый и надежный способ сравнения строк без учета регистра, если не нужно учитывать языковую культуру. 🚀
Добавить комментарий