Когда-нибудь приходилось делать поиск по строковому ключу в Dictionary? Проблема со строковыми ключами — это непредсказуемость регистра (vip вместо VIP и т.п.).
Да, решить вопрос можно по-разному, например через string.ToLower. Однако это можно считать моветоном. Хорошим решением данного вопроса является передача параметра StringComparer.CurrentCultureIgnoreCase в конструктор Dictionary.
По аналогии со словарём, использовать данное решение можно и в случае с HashSet. Пример реализации:
HashSet<string> statuses = new HashSet<string>(StringComparer.CurrentCultureIgnoreCase)
{
"VIP",
"Premium"
};
Console.WriteLine(statuses.Contains("VIP")); // true
Console.WriteLine(statuses.Contains("vip")); // true
#Полезно #StringComparer #Dictionary #HashSet #Array
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5
Ранее мы уже обсуждали корректное сравнение строк из коллекций. На этот раз мы рассмотрим сравнение одиночных строк, минуя их регистр.
Примитив решения сегодняшнего вопроса — это использование string.ToUpper или string.ToLower. Однако помимо очевидного моветона существует ряд дополнительных проблем такого сравнения.
Преимущества сравнения строк с помощью StringComparer:
В моменте я и сам могу забыть о таких решениях, но никогда не поздно приучить себя к полезным и правильным вещам, согласны?
Учимся писать корректно!
#Полезно #StringComparer #Equals
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🔥1
Данная библиотека является расширением метода для StringComparison и IComparer<string>. Имеет поддержку естественной сортировки, когда мы, например, ожидаем порядок "abc1, abc2, abc10" вместо "abc1, abc10, abc2".
Полезно в ситуациях, когда стандартная сортировка строк не соответствует ожидаемому порядку, особенно, если в строках присутствуют числовые сегменты.
Пример использования:
using NaturalSort.Extension;
var arr = new string[] { "a1.txt", "a2.txt", "a10.txt", "a7.txt", "b.txt", "b55.txt", "a13.txt" };
Array.Sort(arr, StringComparer.OrdinalIgnoreCase.WithNaturalSort());
// arr { "a1.txt", "a2.txt", "a7.txt", "a10.txt", "a13.txt", "b.txt", "b55.txt" }
Полная документация библиотеки.
#Полезно #NaturalSort_Extension #StringComparer #Array
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9