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
1 2 3 4 5 6 7 8 |
"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
1 2 3 |
"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ữ
1 2 3 4 |
"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ừ
1 2 3 4 |
"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.
1 2 3 4 5 6 7 8 9 10 11 |
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, v…v). Humanizer có chức năng này, hỗ trợ cả tiếng Anh lẫn Việt.
1 2 3 4 5 6 7 |
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.
1 2 3 4 5 6 7 8 9 |
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 2 3 4 5 |
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 (Khá hay)
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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.
Nguồn: toidicodedao