开发工具【免费下载链接】HumanizerHumanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities项目地址https://gitcode.com/gh_mirrors/hu/Humanizer点击查看免费下载LetterCasing是 .NET 字符串处理库 Humanizer 中用于指定输出字符串大小写风格的枚举它与ApplyCase扩展方法、Humanize系列方法协同工作可在一条链式调用中完成「分词 定大小写」的格式化任务。阅读本文后你将掌握Title、AllCaps、LowerCase、Sentence四种模式的精确语义、底层变换器的实现原理以及如何在字符串、枚举、数字等场景中组合使用它们。LetterCasing 枚举四个取值与语义LetterCasing定义在 src/Humanizer/LetterCasing.cs是 Humanizer 2.13.14 公共 API 的一部分对应文档见 website/versioned_docs/version-2.13.14/api/Humanizer.LetterCasing.md。它只有 4 个取值语义高度明确成员数值输入示例输出示例核心语义Title0SomeStringSome String每个单词首字母大写标题风格AllCaps1SomeStringSOME STRING全部字母大写LowerCase2SomeStringsome string全部字母小写Sentence3SomeStringSome string仅首字符大写其余保持原样从源码看该枚举不带显式数值赋值靠声明顺序隐式编号为 0~3各成员均有 XML 文档注释说明示例转换结果。ApplyCaseLetterCasing 的落地入口枚举本身只表达「意图」真正执行转换的是CasingExtensions.ApplyCase扩展方法定义在 src/Humanizer/CasingExtensions.cspublic static string ApplyCase(this string input, LetterCasing casing) casing switch { LetterCasing.Title input.Transform(To.TitleCase), LetterCasing.LowerCase input.Transform(To.LowerCase), LetterCasing.AllCaps input.Transform(To.UpperCase), LetterCasing.Sentence input.Transform(To.SentenceCase), _ throw new ArgumentOutOfRangeException(nameof(casing)) };要点链式设计ApplyCase内部委托给Transform扩展方法与To门户类src/Humanizer/Transformer/To.csTo暴露了四个ICulturedStringTransformer实例To.TitleCase、To.LowerCase、To.UpperCase、To.SentenceCase并支持按顺序叠加多个变换器transformers.Aggregate(...)。异常行为传入未定义的枚举值会抛出ArgumentOutOfRangeException这是由 switch 的_兜底分支保证的。不可变语义返回的是新字符串原输入不被修改。四个变换器的实现差异变换器实现方式源码路径行为细节ToLowerCasesrc/Humanizer/Transformer/ToLowerCase.cs直接调用culture.TextInfo.ToLower(input)全字符串小写含文化规则如土耳其语的点 i。ToUpperCasesrc/Humanizer/Transformer/ToUpperCase.cs直接调用culture.TextInfo.ToUpper(input)全字符串大写。ToSentenceCasesrc/Humanizer/Transformer/ToSentenceCase.cs仅处理首字符若首字符已是大写则原样返回否则用culture.TextInfo.ToUpper(input[0])大写首字符其余字符完全不动。注意它不会把小写整句的其余部分改掉与 .NET 自带ToTitleCase的整句折叠行为不同。ToTitleCasesrc/Humanizer/Transformer/ToTitleCase.cs逐词处理含智能规则见下一节。Title 模式的智能细节短词、全大写与多语言Title不是简单的「每个词首字母大写」ToTitleCase的实现包含三个值得注意的规则src/Humanizer/Transformer/ToTitleCase.cs虚词不首字母大写非首位的冠词、连词、介词保持小写内置词表为a an as at by if in of on or so to up与and but for nor off the via yetIsArticleOrConjunctionOrPreposition方法。这与许多编辑规范一致——标题中短的虚词不大写。全大写词保持原样如果某个词本身就是全大写如UPPER则跳过不改写从而honors UPPER case。测试中honors UPPER case.ApplyCase(LetterCasing.Title) Honors UPPER Case验证了该行为。文化敏感大小写对土耳其语tr与阿塞拜疆语az文化ASCII 大小写转换走TextInfo.ToUpper/ToLower以遵循其特殊的点 i / 无点 ı 规则其余文化走纯 ASCII 算术换算UsesCultureSensitiveAsciiCasing方法。此外输入含非 ASCII 字符如中文、重音字母时会切换到正则路径TransformWithRegex正则为(\w|[^\u0000-\u007F])?\w*保证对 CJK 等字符也能逐「词」处理。对 ASCII 纯文本ToTitleCase还提供了无正则的快速路径TryTransformAscii用字符数组原地改写、仅在需要变更时分配char[]缓冲是典型的性能优化设计。与 Humanize 组合一条链完成分词与定大小写LetterCasing最常见的实战场景是作为Humanize系列方法的第二参数实现「先分词、后定大小写」的一次成型PascalCaseInputString.Humanize(LetterCasing.AllCaps) // PASCAL CASE INPUT STRING PascalCaseInputString.Humanize(LetterCasing.LowerCase) // pascal case input string PascalCaseInputString.Humanize(LetterCasing.Title) // Pascal Case Input String其实现见 src/Humanizer/StringHumanizeExtensions.csHumanize(string, LetterCasing)等价于input.Humanize().ApplyCase(casing)即先用正则拆解 PascalCase/下划线/连字符分词正则PascalCaseWordPartsPattern见同一文件第 12 行再把结果交给ApplyCase。枚举场景同样支持见 src/Humanizer/EnumHumanizeExtensions.csenum UserType { AnonymousUser, RegisteredUser } UserType.AnonymousUser.Humanize(LetterCasing.AllCaps) // ANONYMOUS USER UserType.AnonymousUser.Humanize(LetterCasing.Title) // Anonymous User UserType.AnonymousUser.Humanize(LetterCasing.LowerCase)// anonymous user此外InflectorExtensions中的标题化辅助方法也复用了ApplyCase(LetterCasing.Title)见 src/Humanizer/InflectorExtensions.cs并在 Humanize 结果为空时回退保留原始输入。测试验证四模式行为均有用例背书Humanizer 对LetterCasing的每个取值都有独立测试见 tests/Humanizer.Tests/CasingTests.csTitlelower case statement → Lower Case Statement、title case (with parenthesis) → Title Case (With Parenthesis)、honors UPPER case → Honors UPPER CaseLowerCaseSentence casing → sentence casing、No honor for UPPER case → no honor for upper caseSentencehonors UPPER case → Honors UPPER case注意这里UPPER保持不变印证了 Sentence 只动首字符AllCapsSentence casing → SENTENCE CASING。这些用例直接对应文档中SomeString的四组示例可作为迁移或自测时的行为基线。小结与使用建议选型参考标题/报表列名用Title界面强调、短标签用AllCaps统一小写存储、模糊匹配用LowerCase仅修饰句首字母、保留正文原样用Sentence。组合习惯先Humanize()完成分词再ApplyCase(LetterCasing.xxx)定大小写或直接使用带LetterCasing参数的重载二者等价。注意文化差异Title/LowerCase/AllCaps均走当前文化的TextInfo可通过Transform(input, culture, ...)显式指定文化土耳其语等场景行为会不同Sentence对大写开头的输入直接原样返回不会强行重排。赞分享开发工具【免费下载链接】HumanizerHumanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities项目地址https://gitcode.com/gh_mirrors/hu/Humanizer点击查看免费下载相关推荐Humanizer 字符串大小写转换详解ApplyCase 方法与 LetterCasing 枚举全解析Humanizer 字符串大小写转换详解ApplyCase 方法与 LetterCasing 枚举全解析 本文围绕 Humanizer 中 CasingExt开发工具Humanizer 的 LetterCasing 枚举四种字符串大小写转换的完整指南Humanizer 的 LetterCasing 枚举四种字符串大小写转换的完整指南 导读 LetterCasing 是 Humanizer 库中定义输出字符开发工具Humanizer LetterCasing 枚举详解四类大小写转换模式与 ApplyCase 实战Humanizer LetterCasing 枚举详解四类大小写转换模式与 ApplyCase 实战 导读 LetterCasing 是 Humanizer开发工具上一篇Cyclone框架入门如何用Python构建高性能Web服务器下一篇ERNIE-4.5-VL-424B-A47B-Base性能测评激活47B参数的超强图文生成与推理能力创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
