推荐一个 C# 编写的轻量级文本模板库,可以作为 string.Format 的替代品。
01
项目简介
SmartFormat不仅继承了 string.Format 的功能,还扩展了更多高级特性,例如命名占位符、列表格式化、本地化支持、复数化等。SmartFormat 提供了高性能、低内存占用的运行时格式化能力。
支持的目标框架
.Net Framework 4.6.2 及更高版本
.Net 标准 2.0、.Net 标准 2.1
.Net 6.0 或 .Net 8.0
02
使用方法
1、简单的例子
var data = new { Library = "SmartFormat"};_ = Smart.Format("Composed with {Library}.", data); // 结果: "Composed with SmartFormat."
2、类似于 string.Format 的风格的例子
var stringFormat = string.Format("{0} {0:N2} {1:yyyy-MM-dd}", 5, new DateTime(1900, 12, 31));var smartFormat = Smart.Format("{0} {0:N2} {1:yyyy-MM-dd}", 5, new DateTime(1900, 12, 31));// 结果: (stringFormat == smartFormat) == true
3、格式化一个 IList 的例子
var data = new [] {1, 2, 3, 4, 5};_ = Smart.Format("{0:list:N2|,|, and }.", (object) data);// 结果: "1.00, 2.00, 3.00, 4.00, and 5.00."
4、根据值选择输出字符串的例子
var data = new[] { new { Name = "John", Gender = 0 }, new { Name = "Mary", Gender = 1 } };_ = Smart.Format("{Name} commented on {Gender:choose:his|her} photo", data[1]);// 结果: "Mary commented on her photo"
5、稍微复杂的例子:格式化器可以嵌套。在这个例子中,我们有一个带有嵌套 ListFormatter(其本身又包含一个 DefaultFormatter)的 ListFormatter。
var data = new List<int[]> { new[] { 1, 2, 3 }, new[] { 4, 5, 6 }, new[] { 7, 8, 9 }};_ = Smart.Format("{0:list:Elements\\: {:list:{:000}|,|, }|\n|\n}", data);/* 结果:Elements: 001, 002, 003Elements: 004, 005, 006Elements: 007, 008, 009 */
03
项目地址
https://github.com/axuno/SmartFormat
- End -