Humanize Your C# Code with the Humanizer NuGet

닷넷디벨·2023년 4월 27일
0
post-custom-banner

Humanize Library 를 소개합니다.이 Lib는 Front 에 표시되는 각종 표시를
사람 친화적으로 표시합니다.

출처:https://youtu.be/S3BEfCzYPRU

Nuget에서 Humanizer 패키지를 설치합니다.

여러 언어 버전이 있습니다.
다행히도 한국어 버전도 있습니다. Humanizer.Core.ko-KR
Humanizer.Core 이건 반드시 설치해야한다고 합니다.
영어외에 타 언어는 하당 언어코드에 맞게 설치해주세요
(현재 36개 언어를 지원한다고 합니다.)

기본사용법

using Humanizer;
using System.ComponentModel;
string testString = "this is mY Sentence. how Do You Think it WENT?";
Console.WriteLine("TitleCase:" + testString.Transform(To.TitleCase));

".Transform(To.TitleCase)"
영문의 경우 앞글자 대문자를 자동으로 바꿔줍니다.

(예시)
"PascalCaseInputStringIsTurnedIntoSentence".Humanize()
결과:"Pascal case input string is turned into sentence"

"Underscored_input_string_is_turned_into_sentence".Humanize()
결과: "Underscored input string is turned into sentence"

"Underscored_input_String_is_turned_INTO_sentence".Humanize()
결과:"Underscored input String is turned INTO sentence"

※ 이런식으로 중복해서 적용할수 있습니다.
Console.WriteLine("LowerCase,SentenceCase:" + testString.Transform(To.LowerCase,To.SentenceCase));

문장을 줄이고 말줄임표를 자동표시하거나 글자를 가릴수 있습니다.

Console.WriteLine("Truncate(10):" + testString.Truncate(10));
Console.WriteLine("Truncate(10) ***:" + testString.Truncate(10,"***"));

시간관련

//시간
Console.WriteLine(DateTime.Now.AddDays(1).Humanize());
Console.WriteLine(DateTime.Now.AddDays(1).AddSeconds(1).Humanize());
Console.WriteLine(DateTime.Now.AddHours(3.1).Humanize());
Console.WriteLine(DateTime.Now.AddHours(-3).Humanize());


시간에 대해서 한글표현도 자동으로 해줍니다.

단위 표시를 자동 계산 할때

var size = 250.Gigabytes();
Console.WriteLine(size.Megabytes);
Console.WriteLine(size.Terabytes);
Console.WriteLine(size.Humanize());
Console.WriteLine(315d.ToHeading(HeadingStyle.Full));
Console.WriteLine(615d.ToHeading(HeadingStyle.Full));
Console.WriteLine(115d.ToHeading(HeadingStyle.Full));
Console.WriteLine(115d.ToHeadingArrow().ToString());
Console.WriteLine(1015d.ToHeadingArrow().ToString());

※ 추가적으로 enum 객체에 대해서 자동매칭을 해줍니다.

enum Book
{
    SelfHelp,
    ScienceFiction,
    [Description("The Scary Math category")]
    MathAndPhysics
}


Book bookType ="Science Fiction".DehumanizeTo<Book>();
Console.WriteLine(bookType);
bookType= "The Scary Math category".DehumanizeTo<Book>();
Console.WriteLine(bookType);

Full Source

using Humanizer;
using System.ComponentModel;

string testString = "this is mY Sentence. how Do You Think it WENT?";

Console.WriteLine("TitleCase:" + testString.Transform(To.TitleCase));
Console.WriteLine("SentenceCase:" + testString.Transform(To.SentenceCase));
Console.WriteLine("LowerCase:" + testString.Transform(To.LowerCase));
Console.WriteLine("UpperCase:" + testString.Transform(To.UpperCase));

Console.WriteLine("LowerCase,SentenceCase:" + testString.Transform(To.LowerCase,To.SentenceCase));
Console.WriteLine("Truncate(10):" + testString.Truncate(10));
Console.WriteLine("Truncate(10) ***:" + testString.Truncate(10,"***"));
string strname = "홍길동";
Console.WriteLine("Truncate(1)**:" + strname.Truncate(2,"**"));
//출력 This Is My Sentence. How Do You Think It WENT?

Console.WriteLine("Book:" + Book.ScienceFiction);
Console.WriteLine("Book:" + Book.ScienceFiction.Humanize());
Console.WriteLine("Book:" + Book.ScienceFiction.Humanize().Transform(To.TitleCase));
Console.WriteLine("Book:" + Book.MathAndPhysics.Humanize());
Book bookType ="Science Fiction".DehumanizeTo<Book>();
Console.WriteLine(bookType);
bookType= "The Scary Math category".DehumanizeTo<Book>();
Console.WriteLine(bookType);
//시간
Console.WriteLine(DateTime.Now.AddDays(1).Humanize());
Console.WriteLine(DateTime.Now.AddDays(1).AddSeconds(1).Humanize());
Console.WriteLine(DateTime.Now.AddHours(3.1).Humanize());
Console.WriteLine(DateTime.Now.AddHours(-3).Humanize());
Console.WriteLine(5.ToOrdinalWords());
Console.WriteLine("LII".FromRoman());
var size = 250.Gigabytes();
Console.WriteLine(size.Megabytes);
Console.WriteLine(size.Terabytes);
Console.WriteLine(size.Humanize());
Console.WriteLine(315d.ToHeading(HeadingStyle.Full));
Console.WriteLine(615d.ToHeading(HeadingStyle.Full));
Console.WriteLine(115d.ToHeading(HeadingStyle.Full));
Console.WriteLine(115d.ToHeadingArrow().ToString());
Console.WriteLine(1015d.ToHeadingArrow().ToString());

enum Book
{
    SelfHelp,
    ScienceFiction,
    [Description("The Scary Math category")]
    MathAndPhysics
}

그외 여러가지 옵션이 존재하는것 같습니다. 여러모로 써먹을만한곳이 많아 보입니다.

profile
hardcore developer
post-custom-banner

0개의 댓글