TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.78K subscribers
Post #1058 1.81K
День восемьсот шестьдесят седьмой.
Работа с Текстом в .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
More from @netdeveloperdiary
  1. Oct 17, 2026День 2817. #ЧтоНовенького #VS Прекращаем Сборку После Первой Ошибки Мэдс Кристенсен продол…
  2. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  3. Oct 15, 2026Post #3374
  4. Oct 14, 2026Post #3373
  5. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  6. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →