Humanize Nuget 라이브러리 소개 #11

Humanize Library 를 소개합니다.이 Library는 사용자에게 보여주는 데이타를
각 문화권에 맞게 인간 친화적으로 표시해주는 Library입니다.

출처: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 자동매칭을 잘활용하면 대단히 유용할것 같긴 한데 100% 확실할지 미지수이긴 하네요

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
}

그외 여러가지 기능이 존재하는것 같습니다. 여러모로 써먹을만한곳이 많아 보입니다.
포스트를 작성하면서 처음 접해본 Library지만 소개못한 기능이 엄청 많아서 놀랐습니다.
생각보다 유명한 Library 같네요

7개의 좋아요

일부분을 만들어서 쓰고 있었는데 갈아타야겠네요 :slight_smile: 좋은 포스트 감사합니다.

1개의 좋아요