摘要:大家好,我是小沈子,今天给大家介绍一个让数据处理更人性化的利器:Humanizer。
大家好,我是小沈子,今天给大家介绍一个让数据处理更人性化的利器:Humanizer。
Humanizer是一个开源的.NET库(支持.NET Standard 1.0+),专注于将机械化的数据格式转换为符合人类自然语言习惯的表达形式。主要用于简化日期、时间、数字和货币的本地化和人性化表达。它非常适用于开发多语言应用,尤其是在需要展示用户友好格式的日期、时间或数量时。
它通过简洁的API帮助开发者解决以下常见问题:
日期时间:"2小时前"代替"2025-03-09 14:30:00"
复数形式:"3 apples"自动处理单复数
数字转换:"1,314"转"一千三百一十四"
字符串处理:驼峰命名转自然语言
单位转换:字节大小智能显示
GitHub星标超过3.3k,NuGet下载量突破1.6亿次,被广泛应用于ASP.NET Core、WPF、控制台程序等各种.NET场景。
二、核心功能详解
1. 字符串人性化
"PascalCaseInputStringIsTurnedIntoSentence".Humanize; // 输出:"Pascal case input string is turned into sentence""Underscored_version_Works_Too".Humanize; // 输出:"Underscored version works too"2. 日期时间处理DateTime.UtcNow.AddHours(-2).Humanize; // "2小时前"DateTime.UtcNow.AddDays(5).Humanize; // "5天后"3. 数字转换1.ToWords; // "one"1234.ToWords; // "one thousand two hundred thirty-four"1234567.ToMetric(decimals: 1); // "1.2M"4. 集合格式化new { "apple", "banana" }.Humanize("与"); // "apple与banana"5. 单位转换2500.Bits.ToString; // "2.5 Kb"1024.Bytes.ToString; // "1 KB"10.5.Gigabytes.ToString; // "10.5 GB"三、安装配置1、打开解决方案,选择“工具”菜单中的“NuGet包管理器”。
2、搜索“Humanizer”,选择官方包并安装。
或者通过NuGet Package Manager(NuGet包管理器)轻松的将Humanizer添加到你的项目中去:
Install-Package Humanizer或.NET CLI:
dotnet add package Humanizer// 原始数据var response = new { FileSize = 1500000, CreatedAt = DateTime.UtcNow.AddDays(-4), ItemCount = 1};// Humanizer转换后return Ok(new { FileSize = response.FileSize.Bytes.Humanize, CreatedAt = response.CreatedAt.Humanize, Message = $"发现{response.ItemCount.ToQuantity("个文件")}"});/* 输出:{ "FileSize": "1.5 MB", "CreatedAt": "4天前", "Message": "发现1个文件"}*/场景2:多语言支持// 设置中文本地化Humanizer.Configuration.Configurator.Configure(c => c.SetLocalisation(new Humanizer.Localisation.Formatters.ChineseSimplifiedFormatter));3.Days.Humanize; // "3天"5.Minutes.Humanize; // "5分钟"场景3:枚举友好显示public enum UserStatus{ [Description("已冻结")] Frozen}UserStatus.Active.Humanize; // 输出"正常使用"虽然Humanizer经过优化(单次调用约0.01ms),但需注意:
避免高频循环内重复调用
对性能敏感场景可预先生成缓存
批量处理建议使用Humanize扩展方法
public class CustomDateTimeHumanizer : DefaultDateTimeHumanizeStrategy{ public override string Humanize(DateTime input, DateTime comparisonBase, CultureInfo culture) { if ((comparisonBase - input).TotalDays > 7) return base.Humanize(input, comparisonBase, culture); return $"精确时间:{input:yyyy-MM-dd HH:mm}"; }}// 注册自定义策略Humanizer.Configuration.Configurator.DateTimeHumanizeStrategy = new CustomDateTimeHumanizer;Humanizer通过简洁的API显著提升了数据处理的人性化程度,建议开发者在以下场景优先考虑使用:
用户界面显示优化
日志信息增强可读性
API响应格式美化
多语言支持场景
数据报表生成
通过合理运用,可使应用程序的输出信息更符合人类自然语言习惯,提升整体用户体验。
--看完本文有收获?请转发分享给更多人
建群声明:本着技术在于分享,方便大家交流学习的初心,特此建立【CSharp技术交流群】,热烈欢迎各位进群交流学习编程心得,也希望进群的大佬能不吝分享自己遇到的技术问题和经验。
看就是最大的支持❤️
来源:opendotnet