首页
学习
活动
专区
圈层
工具
发布

SmartFormat:轻量级文本模板库,轻松替代 string.Format

推荐一个 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 -

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OkH9QgKe0Dx5YYXOhRh59UFw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券