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

菜鸟的C#学习(四)

文章目录

  • 一、格式说明符
    • 1.1、数字格式说明符(适用于数值类型:int, double, decimal 等)
      • 1. 标准数字格式
      • 2. 自定义数字格式
    • 1.2、日期时间格式说明符(适用于 DateTime, DateTimeOffset)
      • 1. 标准日期时间格式
      • 2. 自定义日期时间格式
    • 1.3、枚举格式说明符(适用于 enum 类型)
    • 1.4、组合格式示例
  • 二、
  • 三、
  • 四、

一、格式说明符

C# 中的格式说明符用于格式化各种数据类型的字符串表示,主要分为以下几类,按数据类型分类列举并提供组合示例:

1.1、数字格式说明符(适用于数值类型:int, double, decimal 等)

1. 标准数字格式

  • C/c:货币格式(自动添加货币符号,受当前文化影响)

    Console.WriteLine($"{1234.56:C}");  // ¥1,234.56(中文环境)
    
  • D/d:十进制整数格式(指定位数时不足补0)

    Console.WriteLine($"{123:D5}");     // 00123(固定5位)
    
  • E/e:科学计数法(E为大写,e为小写)

    Console.WriteLine($"{1234.56:E3}"); // 1.235E+003(保留3位小数)
    
  • F/f:固定小数位格式

    Console.WriteLine($"{1234.567:F2}"); // 1234.57(保留2位小数)
    
  • G/g:通用格式(自动选择最简洁的表示)

    Console.WriteLine($"{1234.567:G4}"); // 1235(总位数4位,四舍五入)
    
  • N/n:带千分位分隔符的数字

    Console.WriteLine($"{1234567:N2}"); // 1,234,567.00
    
  • P/p:百分比格式(数值乘以100并加%)

    Console.WriteLine($"{0.123:P1}");   // 12.3%(保留1位小数)
    
  • X/x:十六进制格式(X大写,x小写)

    Console.WriteLine($"{255:X2}");     // FF(2位大写)
    Console.WriteLine($"{255:x4}");     // 00ff(4位小写)
    

2. 自定义数字格式

  • 0:占位符(位数不足补0,超出则原样显示)
  • #:占位符(位数不足不补0,超出则原样显示)
  • .:小数点
  • ,:千分位分隔符(可重复表示比例缩放,如 ,, 表示除以100万)
  • %:百分比(数值乘以100)
  • \:转义字符(显示特殊符号)

示例

// 整数部分至少3位,小数部分固定2位
Console.WriteLine($"{12.3:000.00}");   // 012.30// 整数部分可选,小数部分最多2位(不补0)
Console.WriteLine($"{1234.567:###.##}"); // 1234.57// 千分位分隔+比例缩放(除以1000,显示为"千")
Console.WriteLine($"{1234567:###,}k");   // 1235k(四舍五入到千位)// 混合百分比和自定义格式
Console.WriteLine($"{0.1234:00.0%}");    // 12.3%

1.2、日期时间格式说明符(适用于 DateTime, DateTimeOffset)

1. 标准日期时间格式

  • d:短日期(如 2023/10/05
  • D:长日期(如 2023年10月5日
  • t:短时间(如 14:30
  • T:长时间(如 14:30:45
  • f:完整日期+短时间(如 2023年10月5日 14:30
  • F:完整日期+长时间(如 2023年10月5日 14:30:45
  • g:常规日期+短时间(如 2023/10/05 14:30
  • G:常规日期+长时间(如 2023/10/05 14:30:45
  • s:可排序日期时间(如 2023-10-05T14:30:45,ISO 8601)
  • u:UTC可排序时间(如 2023-10-05 14:30:45Z

示例

DateTime dt = new DateTime(2023, 10, 5, 14, 30, 45);
Console.WriteLine($"{dt:d}"); // 10/5/2023
Console.WriteLine($"{dt:G}"); // 10/5/2023 14:30:45

2. 自定义日期时间格式

  • y/yy/yyy/yyyy:年(如 23/2023
  • M/MM:月(1-12/01-12
  • d/dd:日(1-31/01-31
  • h/hh:12小时制时(1-12/01-12
  • H/HH:24小时制时(0-23/00-23
  • m/mm:分(0-59/00-59
  • s/ss:秒(0-59/00-59
  • f/ff/fff:毫秒(1位/2位/3位)
  • t:上午/下午(A/P
  • z/zz/zzz:时区偏移(如 +08/+08:00

示例

DateTime dt = new DateTime(2023, 10, 5, 14, 30, 45, 123);
// 格式:年-月-日 时:分:秒.毫秒 时区
Console.WriteLine($"{dt:yyyy-MM-dd HH:mm:ss.fff zzz}"); 
// 输出:2023-10-05 14:30:45.123 +08:00

1.3、枚举格式说明符(适用于 enum 类型)

  • G/g:默认(显示枚举名, Flags 组合时用逗号分隔)
  • F/f:Flags 组合时强制显示所有名称(即使未标记 Flags)
  • D/d:显示枚举的基础数值
  • X/x:显示基础数值的十六进制形式

示例

[Flags]
enum MyEnum { A = 1, B = 2, C = 4 }
MyEnum val = MyEnum.A | MyEnum.C;Console.WriteLine($"{val:G}"); // A, C(名称组合)
Console.WriteLine($"{val:D}"); // 5(基础数值)
Console.WriteLine($"{val:X}"); // 00000005(十六进制)

1.4、组合格式示例

  1. 数字+日期组合
var data = new { Amount = 1234.56, Date = new DateTime(2023, 10, 5) };
Console.WriteLine($"{data.Date:yyyy-MM-dd} 交易金额:{data.Amount:C2}");
// 输出:2023-10-05 交易金额:¥1,234.56
  1. 自定义数字+转义字符
double ratio = 0.7532;
Console.WriteLine($"完成率:{ratio:00.00%}{ratio:0.##})");
// 输出:完成率:75.32%(0.75)
  1. 时间+毫秒精度
DateTime dt = DateTime.Now;
Console.WriteLine($"当前时间:{dt:HH:mm:ss.fff}");
// 输出:当前时间:15:42:36.789

说明

  • 格式说明符区分大小写(如 Xx 分别对应大小写十六进制)。
  • 可通过 IFormatProvider 自定义文化(如指定 CultureInfo.InvariantCulture 避免地区差异)。
  • 组合使用时,多个格式说明符需按类型规则拆分(如数字和日期需分别指定格式)。

二、

三、

四、

http://www.lryc.cn/news/601358.html

相关文章:

  • windows 10安装oracle(win64_11gR2)
  • 医疗AI语义潜空间分析研究:进展与应用
  • Unity 实时 CPU 使用率监控
  • IP--MGER综合实验报告
  • Linux驱动20 --- FFMPEG视频API
  • 回归预测 | MATLAB实现BiTCN双向时间卷积神经网络多输入单输出回归预测
  • AWS免费套餐全面升级:企业降本增效与技术创新解决方案
  • 《频率之光》
  • 详解赛灵思SRIO IP并提供一种FIFO封装SRIO的收发控制器仿真验证
  • 基于Django的天气数据可视化分析预测系统
  • Django实时通信实战:WebSocket与ASGI全解析(下)
  • 二、搭建springCloudAlibaba2021.1版本分布式微服务-Nacos搭建及服务注册和配置中心
  • mybatis的insert(pojo),会返回pojo吗
  • 激光SLAM技术综述(2025版)
  • springboot基于Java的人力资源管理系统设计与实现
  • Windows 11 安装 jdk 8
  • QT开发---网络编程下
  • 全面理解JVM虚拟机
  • Python day26
  • Python数据分析基础(一)
  • 沪深L2逐笔十档委托队列分时Tick历史数据分析处理
  • RK3568 Linux驱动学习——U-Boot使用
  • 15.7 DeepSpeed实战:单卡38GB到多卡12GB,3倍效率提升的ZeRO-3配置全解
  • golang设置http代理
  • 2025年Solar应急响应公益月赛-7月wp
  • 将 JsonArray 类型的数据导出到Excel文件里的两种方式
  • 新手向:IDM下载失败排查
  • keepalived入门及其基础运用实验
  • Java面试宝典:MySQL执行原理二
  • 字节跳动Coze Studio开源了!架构解析