C#字符串格式化之$语法

引言

字符串是编程中使用较广的一种数据,它由数字、字母、下划线等组成。在使用过程中会对字符串进行格式化。在C#语言中,.NET 6及以上使用字符串插值($""语法)对字符串格式化。

$语法

.NET 6 及以上提供的一种新的语法糖,它的作用相当于对String.format的简化。使用$可以将字符串字面量标识为内插字符串,内插字符串将可设置其格式。

语法结构

1、语法格式如下:

$("{<Expression>[,<alignment>][:<formatString>]}")

2、语法说明:

Expression:内插字符串的字面量表达式。

alignment:对齐方式,正则右对齐;负则为左对齐。

formatString:表达式结果类型支持的格式字符串。

应用方法

1、基本使用字符串内插:在字符串前用$,然后在{}中填写表达式。如下示例:

// 使用 $ 构建文件完整路径string fileName = $"{AppDomain.CurrentDomain.BaseDirectory}20240518.log";// 在控制台输出变量fileName的值Console.WriteLine(fileName);// 显示时间Console.WriteLine($"今天是:{DateTime.Now}");

2、设置宽度与对齐:在Expression加逗号,然后填写宽度长度,为正右对齐。为负则左对齐。如下示例:​​​​​​​

// 定义苹果单价变量double applePrice = 9.45;// 定义香蕉单价变量double bananaPrice = 11.5;// 输出标题Console.WriteLine($"|{"名称",-7}|{"Price",7}|");// 输出内容Console.WriteLine($"|{"苹果",-7}|{applePrice,7}|");Console.WriteLine($"|{"香蕉",-7}|{bananaPrice,7}|");// 执行结果|名称     |  Price||苹果     |   9.45||香蕉     |   11.5|

3、忽略转义字符:如果在字符串里需包含一些特殊字符,那就会用到转义字符,如果要忽略转义字符,我们可以使用@符号。对于$的语法,可以将@放在$前或后都可以。如下示例:​​​​​​​

// 文件名称string logFileName = "20240504.log";// 使用 $ 定义完整路径string filePath = $@"D:\""{{{logFileName}}}""";// 输出Console.WriteLine(filePath);// 执行结果D:\"{20240504.log}"

注:输出{ 字符需双写,输出"字符需双写。

4、使用条件运算:将表达式放到括号()里。如下示例:​​​​​​​

// 定义数学分数double mathScore = 92;// 根据分数判断是否合格,并输出Console.WriteLine($"{(mathScore>90 ? "合格" : "不合格")}");

5、格式化字符串:可以参考String.Format 对日期、数字、货币等格式。下面给出一些示例:​​​​​​​​​​​​​​

#region 日期格式化// 使用d格式符 输出 2024/5/4Console.WriteLine($"{System.DateTime.Now:d}");// 使用D格式符 输出 2024年5月4日Console.WriteLine($"{System.DateTime.Now:D}");// 使用f格式符 输出 2024年5月4日 9:47Console.WriteLine($"{System.DateTime.Now:f}");// 使用F格式符 输出 2024年5月4日 9:47:51Console.WriteLine($"{System.DateTime.Now:F}");// 使用g格式符 输出 2024/5/4 9:47Console.WriteLine($"{System.DateTime.Now:g}");// 使用G格式符 输出 2024/5/4 9:47:51Console.WriteLine($"{System.DateTime.Now:G}");// 使用m格式符 输出 5月4日Console.WriteLine($"{System.DateTime.Now:m}");// 使用t格式符 输出 9:47Console.WriteLine($"{System.DateTime.Now:t}");// 使用T格式符 输出 9:47:51Console.WriteLine($"{System.DateTime.Now:T}");// 使用y或Y格式符 2024年5月Console.WriteLine($"{System.DateTime.Now:y}");#endregion
#region 货币// 使用C格式符 输出 ¥22.15,¥18.12Console.WriteLine($"{22.15:C},{18.12:C}");// 使用C格式符带指定位数 输出 ¥21.3,¥20.80 此次的21.26截取会自动四舍五入位21.3Console.WriteLine($"{21.26:C1},{20.8:C3}");#endregion
#region 数字// 使用 D 格式符 固定的位数位3 输出 021,位数不够以0补充Console.WriteLine($"{21:D3}");// 使用 D 格式符 固定的位数位2 输出 142,位数超数指定为,则按原数字输出Console.WriteLine($"{142:D2}");// 使用 N 格式符 输出 132.00 默认为小数点后面两位Console.WriteLine($"{132:N}");// 使用 N 格式符指定保留小数位 输出 123.246 自动四舍五入Console.WriteLine($"{123.2458:N3}");// 使用 P 格式符 输出 21.58%  默认为小数点后面两位 自动四舍五入Console.WriteLine($"{0.21583:P}");// 使用 P 格式符指定保留小数位 输出 21.6% 自动四舍五入Console.WriteLine($"{0.21583:P1}");#endregion
#region 占位符// 使用 0 占位符 输出 1346.23Console.WriteLine($"{1346.23:0000.00}");// 使用 0 占位符 输出 0154.03 超出小数被截取会自动四舍五入Console.WriteLine($"{154.029:0000.00}");// 使用 # 数字占位符 输出 13295.02 超出小数被截取会自动四舍五入Console.WriteLine($"{13295.019:###.##}");// 使用 # 数字占位符 输出124 小数位0,则不被显示Console.WriteLine($"{124.029:####.#}");#endregion

小结

以上使用$语法对字符串格式化的介绍,注意这一用法需在.NET 6及以上版本方可使用。如有不到之处,请多多包涵。

相关推荐

  1. C#字符串格式化$语法

    2024-06-07 07:06:05       8 阅读
  2. C语言扫描字符串

    2024-06-07 07:06:05       33 阅读
  3. C语言snprintf():将格式化字符串输出到数组中

    2024-06-07 07:06:05       20 阅读
  4. C语言输入字符串字符统计

    2024-06-07 07:06:05       35 阅读
  5. C语言基础字符串处理函数

    2024-06-07 07:06:05       21 阅读
  6. (Unity)C# 中的字符串格式化

    2024-06-07 07:06:05       29 阅读
  7. C语言删除字符串中间和后面的*

    2024-06-07 07:06:05       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 07:06:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 07:06:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 07:06:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 07:06:05       20 阅读

热门阅读

  1. Python_ 爬楼梯

    2024-06-07 07:06:05       7 阅读
  2. OCR行驶证识别介绍

    2024-06-07 07:06:05       10 阅读
  3. ubuntu24安装python2

    2024-06-07 07:06:05       7 阅读
  4. C语言题目:单词个数统计

    2024-06-07 07:06:05       8 阅读
  5. Elasticsearch入门:初识分布式搜索引擎

    2024-06-07 07:06:05       10 阅读
  6. HashMap

    2024-06-07 07:06:05       11 阅读
  7. uniapp使用 input弹出键盘问题

    2024-06-07 07:06:05       10 阅读
  8. 【POSIX】使用regex进行正则匹配

    2024-06-07 07:06:05       10 阅读
  9. 探索Linux中的gzip命令:压缩与解压缩的艺术

    2024-06-07 07:06:05       10 阅读
  10. LeetCode|2331. Evaluate Boolean Binary Tree

    2024-06-07 07:06:05       9 阅读
  11. ES6中的class类 及 递归

    2024-06-07 07:06:05       9 阅读
  12. R语言中的列表list

    2024-06-07 07:06:05       8 阅读
  13. 服务器硬件基础知识

    2024-06-07 07:06:05       9 阅读
  14. 重构与优化-条件表达式优化(4)

    2024-06-07 07:06:05       9 阅读