12380网站建设四川省城乡建设厅网站
自C#6.0开始提供一个新的语法糖,即"$" 符号,配合“{}”使用,它的作用除了是对String.format的简化,还可设置其格式模板,实现了对字符串的拼接优化。
语法格式:
 $"string {变量表达式}”
语法结构
 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/4
 Console.WriteLine($"{System.DateTime.Now:d}");
 // 使用D格式符 输出 2024年5月4日
 Console.WriteLine($"{System.DateTime.Now:D}");
 // 使用f格式符 输出 2024年5月4日 9:47
 Console.WriteLine($"{System.DateTime.Now:f}");
 // 使用F格式符 输出 2024年5月4日 9:47:51
 Console.WriteLine($"{System.DateTime.Now:F}");
 // 使用g格式符 输出 2024/5/4 9:47
 Console.WriteLine($"{System.DateTime.Now:g}");
 // 使用G格式符 输出 2024/5/4 9:47:51
 Console.WriteLine($"{System.DateTime.Now:G}");
 // 使用m格式符 输出 5月4日
 Console.WriteLine($"{System.DateTime.Now:m}");
 // 使用t格式符 输出 9:47
 Console.WriteLine($"{System.DateTime.Now:t}");
 // 使用T格式符 输出 9:47:51
 Console.WriteLine($"{System.DateTime.Now:T}");
 // 使用y或Y格式符 2024年5月
 Console.WriteLine($"{System.DateTime.Now:y}");
 #endregion
#region 货币
 // 使用C格式符 输出 ¥22.15,¥18.12
 Console.WriteLine($"{22.15:C},{18.12:C}");
 // 使用C格式符带指定位数 输出 ¥21.3,¥20.80 此次的21.26截取会自动四舍五入位21.3
 Console.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.23
 Console.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
