Humanizer – Một thư viện khá thú vị của C#

Thư viện Humanizer đáp ứng tất cả nhu cầu của bạn cho các thao tác và hiển thị chuỗi, đếm, ngày, giờ, timespans, số và số lượng.

Thư viện Humanizer đáp ứng tất cả nhu cầu của bạn cho các thao tác và hiển thị chuỗi, đếm, ngày, giờ, timespans, số và số lượng. Nghe đơn giản nhưng bạn sẽ ngạc nhiên trước những chức năng của nó.

1. Chuyển tên hàm, tên biến thành chuỗi có nghĩa

Trong lập trình, ta hay đặt tên trường, tên hàm, tên biến theo naming convension. Humanizer cho phép biến những tên này thành một chuỗi có nghĩa:

"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

Ta cũng có thể chuyển đổi ngược lại bằng các hàm Pascalize, Camelize, Underscore:

"some title".Pascalize(); //SomeTitle

"some title".Camelize(); //someTitle

"some title".Underscore(); //some_title

Có thể transform một string thành thành: chữ hoa, chữ thường, viết hoa đầu dòng, đầu mỗi chữ:

"Sentence casing".Transform(To.LowerCase);//sentence casing

"Sentence casing".Transform(To.SentenceCase); //Sentence casing

"Sentence casing".Transform(To.TitleCase); //Sentence Casing

"Sentence casing".Transform(To.UpperCase); //SENTENCE CASING

2. Thu gọn chuỗi

Để hiển thị thông tin dài, ta thường viết hàm cắt chuỗi, sau đó kết thúc bằng dấu … Humanizer có sẵn hàm hỗ trợ việc này. Ta còn có thể cắt theo số kí tự hoặc số từ:

"Long text to truncate".Truncate(10, Truncator.FixedLength); //Cắt 10 kí tự

//Long text…

"Long text to truncate".Truncate(2, Truncator.FixedNumberOfWords); //Cắt 2 từ

//Long text…

3. Chuyển enum thành chuỗi có nghĩa

Với 1 số enum dài, ta thường dùng Annotation để chuyển nó thành chuỗi có nghĩa. Humanizer xử lý chuyện này rất dễ dàng.

public enum EnumUnderTest

{

    [Description(Custom description)]

    MemberWithDescriptionAttribute,

    MemberWithoutDescriptionAttribute,

}

 

// Nếu có DescriptionAttribute thì đọc từ Attribute

EnumUnderTest.MemberWithDescriptionAttribute.Humanize(); //Custom description

// Nếu không có thì tự chuyển tên enum sang chuỗi

EnumUnderTest.MemberWithoutDescriptionAttribute.Humanize(); //Member without description attribute

4. Xử lý DateTime

Bạn muốn làm chức năng tính thời gian post của comment như facebook (1 giờ trước, 2 giờ trước,…). Humanizer có chức năng này, hỗ trợ cả tiếng Anh lẫn Việt.

Thread.CurrentThread.CurrentUICulture = new CultureInfo("vi-VN"); //Set ngôn ngữ Việt

 

DateTime.UtcNow.AddHours(-30).Humanize(); // "hôm qua

DateTime.UtcNow.AddHours(-60).Humanize(); //"cách đây 2 ngày

 

DateTime.UtcNow.AddHours(2).Humanize(); //2 giờ nữa

DateTime.UtcNow.AddDays(1).Humanize(); //Ngày mai

5. Xử lý TimeSpan

Chức năng xử lý TimeSpan cũng tương tự, cả tiếng anh lẫn tiếng Việt đều chạy rất tốt.

TimeSpan.FromMilliseconds(2).Humanize(); //2 milliseconds

TimeSpan.FromDays(1).Humanize(); //1 day

TimeSpan.FromDays(16).Humanize(); //2 weeks

 

// Mặc định, hàm Humanize() sẽ đưa ra đơn vị lớn nhất (năm -> tháng -> tuần, ...).

// Ta truyền thêm tham số để hiển thị các đơn vị nhỏ hơn

TimeSpan.FromMilliseconds(1299630020).Humanize(); //2 weeks

TimeSpan.FromMilliseconds(1299630020).Humanize(3); //2 weeks, 1 day, 1 hour

TimeSpan.FromMilliseconds(1299630020).Humanize(4); //2 weeks, 1 day, 1 hour, 30 seconds

6. Chuyển số thành chữ (Chỉ tiếng Anh)

1.ToWords(); //one

10.ToWords(); //ten

11.ToWords(); //eleven

122.ToWords(); //one hundred and twenty-two

3501.ToWords(); //three thousand five hundred and one

7. Xử lý file size

Humanizer cho phép xử lý các số liệu liên quan tới filesize (KB, MB, GB, …) một cách dễ dàng

var fileSize = (10).Kilobytes();

 

fileSize.Bits      => 81920

fileSize.Bytes     => 10240

fileSize.Kilobytes => 10

 

//Ta có thể cộng trừ file size

var total = (10).Gigabytes() + (512).Megabytes() - (2.5).Gigabytes();

 

//Hiển thị dưới dạng text

7.Bits().ToString();        // 7 b

8.Bits().ToString();        // 1 B

(.5).Kilobytes().Humanize();  // 512 B

(1000).Kilobytes().ToString(); // 1000 KB

(1024).Kilobytes().Humanize(); // 1 MB

 

//Parse ngược từ text ra (Không phân biệt hoa thường)

ByteSize.Parse("1.55 mB");

ByteSize.Parse("1.55 mb");

ByteSize.Parse("1.55 GB");

ByteSize.Parse("1.55 gB");

ByteSize.Parse("1.55 gb");

ByteSize.Parse("1.55 TB");

Bài viết trên đã giới thiệu được một số tính năng nổi bật của Humanizer. Các bạn sẽ có thêm những trải nghiệm thú vị về C# khi tham gia khóa học lập trình C# tại Stanford – dạy kinh nghiệm lập trình.

Hãy đăng ký khóa học Lập trình ứng dụng với window from C# tại đây

Sưu tầm theo toidicodedao

Tags: