Работа с Текстом в .NET с Помощью Humanizer
Для передачи сообщений в UI нам довольно часто требуется работать с текстом. NuGet пакет Humanizer серьёзно упрощает эту работу, позволяя выполнять десятки различных преобразований с помощью вызова методов расширения на строках и числах. Например:
"hello_world".Humanize(); // hello worldПомимо этого, методу можно передать значение перечисления
LetterCasing и сделать заглавной первую букву строки, первую букву каждого слова или все буквы. При этом он не трогает популярные аббревиатуры, вроде HTML. Возможно и обратное преобразование из предложения в PascalCase строку.Пока не сильно впечатляет? Подождите, вот лишь некоторые функции, которые мне показались наиболее интересными:
-
Truncate(n) – обрезает строку до n символов и добавляет многоточие,-
Humanize(), применённая к значению enum, выдаёт либо предложение из PascalCase имени значения, либо значение атрибута Description, если он задан. Кроме того, если значение помечено атрибутом Display с данными локализации (Description и ResourceType), Humanize() выдаст локализованное описание.-
Humanize() на значении типа DateTime выдаст популярные в соцсетях строки о времени размещения поста: (минуту назад, час назад, вчера и т.п.) – всё относительно текущего времени.-
Humanize() на значении типа TimeSpan распишет период с заданной точностью, вроде: 2 недели, 3 дня, 6 часов и 24 минуты.-
ToQuantity(n) – выдаст строку вида «n штук» с правильным окончанием.-
Ordinalize() на целом значении выдаст порядковый номер, вроде 1ый, 2ой и т.п.-
ToWords() на числе выдаст число словами, например: сто двадцать три.-
ToOrdinalWords() на числе выдаст порядковый номер.-
ToOrdinalWords() на дате выдаст полное написание даты в текущей культуре, например, January 1st, 2015 для en-US.-
ToRoman() и FromRoman() – перевод из арабских чисел в римские и наоборот.-
Seconds(), Minutes(), Hours(),… позволяют использовать Fluent API для дат, например: DateTime.Now + 2.Days() + 3.Hours() - 5.Minutes()
- Bytes(), Kilobytes(), Megabytes(),… - аналогично позволяют переводить размеры в байтах, а Humanize() на результате выдаст «человеческое» представление размера, например:(.5).Gigabytes().Humanize(); // 512 MBИ это только некоторые функции, и только базовый вариант их использования. На самом деле, для каждой есть несколько параметров для тонкой настройки.
Локализованные варианты пакета доступны более, чем на 15 языках, включая русский.
Подробнее читайте на страничке проекта в GitHub.
Источник: https://youtu.be/bLKXqJwRNSY