当前位置: 首页 > article >正文

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, 003
Elements: 004, 005, 006
Elements: 007, 008, 009 */

03 项目地址

https://github.com/axuno/SmartFormat

更多开源项目: https://github.com/bianchenglequ/NetCodeTop

我是编程乐趣,一个.Net开发经验老程序员,欢迎“关注”我,每天为你分享开源项目和编程知识。
也欢迎加入【.Net技术编程交流社区】,和大家共同学习交流!,
点击加入:https://bbs.csdn.net/topics/613465368

- End -

推荐阅读

2个零基础入门框架教程!

一款可以替代Navicat的数据库管理工具

CSCore:一个.Net功能强大且灵活的开源音频处理库

Blazor开源UI简洁组件:10个热门.Net开源项目推荐!

ExcelDataReader:一个.Net高性能Excel开源读取器


http://www.kler.cn/a/585385.html

相关文章:

  • 如何上传文件到github
  • NAT 和 IP 直接通信的区别
  • 汽车无钥匙启动系统不使用传统机械钥匙启动汽车
  • 记.net core 8 集成 grpc
  • BGP路由聚合
  • WebSocket 使用教程:从原理到实践
  • 搜广推校招面经四十九
  • 探索Trae:Cursor的完美替代,Claude-3.5-Sonnet与GPT-4o免费体验
  • VUE的脚手架搭建引入类库
  • 课上测试:MIRACL共享库使用测试
  • Matlab 灰度质心+抛物线拟合提取条纹中心
  • 黑马JUC学习笔记-上
  • 优化Go错误码管理:构建清晰、优雅的HTTP和gRPC错误码规范
  • Java通过Apache POI操作Excel
  • 正则表达式入门及常用的正则表达式
  • 封装WPF中转换器常用用法封装
  • 在PowerShell脚本中编辑appsettings.json
  • Qt QML实现鼠标自由选择不规则区域进行截图
  • Quickwit+Jaeger+Prometheus+Grafana搭建Java日志管理平台
  • 大数据学习(68)- Flink和Spark Streaming