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

C#字符串格式化的方式

1. 字符串插值(C# 6.0 及更高版本)

字符串插值是 C# 6.0 引入的一种非常直观和方便的字符串格式化方法。通过在字符串中使用 ${} 语法,可以直接将变量的值嵌入到字符串中。

int number = 10;  
string message = $"The number is {number}.";  
Console.WriteLine(message);  // 输出:The number is 10.

2. String.Format 方法

String.Format 方法允许你使用类似于 printf 的格式字符串来格式化字符串。

int number = 10;  
string message = String.Format("The number is {0}.", number);  
Console.WriteLine(message);  // 输出:The number is 10.  // 也可以指定多个参数  
string name = "Alice";  
message = String.Format("Hello, {0}! The number is {1}.", name, number);  
Console.WriteLine(message);  // 输出:Hello, Alice! The number is 10.

3. 复合格式化(与 String.Format 类似)

许多.NET 类库中的方法都支持复合格式化,这意味着你可以直接使用格式字符串和参数列表来生成格式化的字符串,而无需显式调用 String.Format。例如,Console.WriteLineStringBuilder.AppendFormat 等方法。

int number = 10;  
Console.WriteLine("The number is {0}.", number);  // 输出:The number is 10.

4. ToString 方法

大多数.NET 类型都提供了 ToString 方法,该方法可以接受一个或多个格式化参数,以生成格式化的字符串表示。

int number = 10;  
string formattedNumber = number.ToString("D8");  // 输出:00000010,D8 表示至少显示8位数字,不足前面补0  
Console.WriteLine(formattedNumber);

5. 自定义格式化

你还可以通过实现 IFormattable 接口来自定义类型的格式化方式。这允许你在类型级别上控制字符串的格式化行为。

public class MyNumber : IFormattable  
{  private int value;  public MyNumber(int value)  {  this.value = value;  }  public string ToString(string format, IFormatProvider formatProvider)  {  if (formatProvider != null)  {  // 可以使用 formatProvider  }  if (format == "hex")  {  return value.ToString("X");  }  return value.ToString();  }  // 还可以覆盖 ToString() 无参版本  public override string ToString()  {  return ToString(null, null);  }  
}  // 使用  
MyNumber myNumber = new MyNumber(255);  
Console.WriteLine(myNumber.ToString("hex"));  // 输出:FF

可根据需要选择最合适的方法。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • nginx的正向代理和反向代理
  • 微软 Edge 浏览器全解析
  • Kylin系列(三)安装与配置:搭建你的第一个 Kylin 环境
  • 网络防御保护——网络安全概述
  • 第二周:李宏毅机器学习笔记
  • Android知识收集
  • openGauss配置vscode编译调试环境
  • Python: 分块读取文本文件
  • SQL注入如何判断数据库类型
  • JVM专题之G1垃圾收集器下
  • python学习-容器类型
  • Redis 7.x 系列【22】主从复制配置项
  • 创建数据库表的语法定义包含了SQL Server、Mysql、PostgreSQL、SQLite的示例
  • zabbix 学习笔记
  • 基础架构服务API:降低成本,提升业务效益
  • $translatePartialLoader加载失败及解决方式
  • 「面试题」如何实现一个圣杯布局?
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JS 面试题总结
  • learning koa2.x
  • Node + FFmpeg 实现Canvas动画导出视频
  • React中的“虫洞”——Context
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 初探 Vue 生命周期和钩子函数
  • 给初学者:JavaScript 中数组操作注意点
  • 基于遗传算法的优化问题求解
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 你对linux中grep命令知道多少?
  • AI算硅基生命吗,为什么?
  • Python 之网络式编程
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $.ajax,axios,fetch三种ajax请求的区别
  • $jQuery 重写Alert样式方法
  • (python)数据结构---字典
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)模仿学习-完成后台管理页面查询
  • (一)Java算法:二分查找
  • (转)ABI是什么
  • (转)visual stdio 书签功能介绍
  • (转)可以带来幸福的一本书
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .NET建议使用的大小写命名原则
  • .NET企业级应用架构设计系列之结尾篇
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /etc/fstab和/etc/mtab的区别
  • @antv/g6 业务场景:流程图
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [8] CUDA之向量点乘和矩阵乘法