C# 新语法中的字符串内插$和{}符号用法详解

自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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/35779.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

库存看板在现代企业管理中的作用:如何通过看板系统提升库存流动性与效率?

库存管理是现代企业管理中的重要环节&#xff0c;尤其对于制造业、零售业及电商平台等行业&#xff0c;如何高效、精准地管理库存&#xff0c;避免过度库存积压或库存不足的情况&#xff0c;直接影响到公司的运营成本、资金周转、客户满意度等多个方面。而在众多库存管理方法中…

免押租赁系统助力资源共享新模式开创便捷租赁体验

内容概要 免押租赁系统&#xff0c;听起来是不是很酷&#xff1f;这个新模式不仅仅是为了让你少花点钱&#xff0c;它的到来简直就是个革命&#xff01;以前&#xff0c;租东西时首先想到的就是那个令人心痛的押金&#xff0c;对吧&#xff1f;但现在&#xff0c;免押租赁系统…

Spring Boot 3 + Vue 3实战:实现用户登录功能

文章目录 一、实战概述二、实战步骤? &#xff08;一&#xff09;创建前端项目 - login-vue 1、创建Vue项目2、安装axios模块3、安装vue-router模块4、安装less和less-loader模块5、运行Vue项目6、在浏览器里访问首页7、在IDEA里打开Vue项目8、创建登录Vue组件9、创建首页Vue…

记录一次老平台改造通知用户刷新页面,纯前端实现

记录一次老平台改造通知用户刷新页面&#xff0c;纯前端实现 方案概述背景现状问题本质 方案设计前提设计实现 其他补充写在最后的话抛出一个问题 方案概述 背景 前端构建完上线&#xff0c;用户还停留还在老页面&#xff0c;用户不知道网页重新部署了&#xff0c;跳转页面的时…

11.12[CQU JAVEE_EXP3][JAVA WEB]3h速成JAVA WEB;DE启动Tomcat的各种BUG;GIT

GIT 如果有四个实验&#xff0c;但希望将四个实验保存在一个远程仓库当中&#xff0c;且分别有一个文件夹来区分&#xff0c;但是在本地写实验的时候&#xff0c;希望每次只打开一个实验&#xff0c;并且做完后向远程仓库中提交&#xff0c;不会拉取远程仓库中的其它实验代码 …

PYTHON编写API

API——application programming interface 全称为应用程序开发接口&#xff0c;是不同软件系统之间相互通信的桥梁。通过API&#xff0c;开发者可以通过标准化的请求和响应机制&#xff0c;访问服务器上的数据和功能&#xff0c;而无需了解具体的内部实现细节。在python中&am…

网络基础和UDP函数的简单使用

网络发展 最开始&#xff0c;计算机是独立的个体&#xff0c;因为需求需要计算机之间交换数据&#xff0c;由局域网&#xff08;私网&#xff09;–>广域网&#xff08;公网&#xff09;&#xff0c;网络就逐渐发展起来了。 初识协议 协议就是一种约定 网络协议就是众多协…

Netty入门教程——认识Netty

Netty入门教程——认识Netty 什么是Netty&#xff1f; Netty 是一个利用 Java 的高级网络的能力&#xff0c;隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。 Netty 是一个广泛使用的 Java 网络编程框架&#xff08;Netty 在 2011 年获得了Duke’s Choice …

调用大模型api 批量处理图像 保存到excel

最近需要调用大模型&#xff0c;并将结果保存到excel中&#xff0c;效果如下&#xff1a; 代码&#xff1a; import base64 from zhipuai import ZhipuAI import os import pandas as pd from openpyxl import Workbook from openpyxl.drawing.image import Image from io i…

Python基于TensorFlow实现BP和LSTM神经网络的空气质量预测并使用SHAP解释模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着工业化进程的加速和城市化的扩展&#xff0c;空气污染成为全球面临的主要环境问题之一。空气质…

高效查找秘密武器一:位图

有这样的一个问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数 中。 那么我们一般会想到这样做的 1.遍历&#xff0c;时间复杂度O(n) 2.排序&#xff08;N*logN&#xff09;&#xff0c…

对于小型企业,独立站和电商平台哪个更经济?

对于小型企业来说&#xff0c;选择独立站还是电商平台&#xff0c;需要根据各自的成本优势来决定。以下是一些关键点的比较&#xff1a; 平台费用&#xff1a; 电商平台&#xff1a;通常需要缴纳一定比例的交易佣金或年费&#xff0c;例如天猫、京东等平台的保证金和佣金费用相…

带权并查集和扩展域并查集的一些整理和理解(上)

请读者在有一定并查集基础上再阅读&#xff08;至少要知道什么是带权和扩展域并查集&#xff09; 在最近做题时候&#xff0c;我遇到了一些带权并查集和扩展域并查集的题目。我觉得它们都很难写也很难想&#xff0c;尤其是带权并查集我几乎第一时间无法想到是怎么做的&#xf…

json+Tomact项目报错怎么办?

在响应请求的时候&#xff0c;如果http响应没有指定响应数据的content-type&#xff0c;浏览器就不知道按照什么格式解析响应体的数据&#xff0c;因为浏览器只知道怎样解析http的行和头&#xff0c;再从头里获取响应体的字节长度和类型&#xff0c;按照你给的长度去截流&#…

极限激光雷达点云数据集

https://arxiv.org/pdf/2307.07607v5 ‎ - AirLab 他们的数据集里面有这么多极限场景 点云数据转换 他们的激光用的velodyne,录制的格式是【velodyne_msgs/VelodyneScan】 需要把【velodyne_msgs/VelodyneScan】转化成【sensor_msgs/PointCloud2】 我编译https://github.co…

信奥常考点:二叉树的构建(已知中序和 前序或后序 的情况下)

一、题目引入 这是来自CCF-GESP C七级认证 2024年9月的题目。 我们在此不解题&#xff0c;只把树画出来。 CCF-GESP 编程能力认证 C 七级 2024年9月份详细解析-CSDN博客 二、解题过程 我们可以根据先序遍历得出根节点是A&#xff0c;然后我们得到了A的左子树[B D]&#xff08;橙…

电容的概念和基本参数

电容基本概念 电容最简单的结构可由两个相互靠近的导体平面中间夹一层绝缘介质组成&#xff0c;当在电容两个极板间加上电压时&#xff0c;电容就会储存电荷&#xff0c;所以电容是一个充放电荷的电子元器件。电容量是电容储存电荷多少的一个量值&#xff0c;平板电容的电容量…

【js逆向专题】13.jsvmp补环境篇一

目录 一.了解jsvmp技术1. js虚拟机保护方案2.jsvmp实现原理3. 模拟jsvmp执行过程 二.环境检测1. 什么是环境检测2.案例讲解 三. 项目实战1. 案例11.逆向目标2. 项目分析1.补第一个referrer2. 调试技巧13. 调试技巧24. 补充sign5. 补 length6. 参数长短补充 3. 逆向结果 2. 案例…

高质量翻译在美国推广移动应用中的重要性

美国的移动应用市场是世界上竞争最激烈、利润最高的市场之一&#xff0c;为开发者提供了接触数百万潜在用户的机会。然而&#xff0c;进入这个市场需要的不仅仅是创新技术或令人信服的想法&#xff1b;它要求与目标受众进行有效地沟通和文化契合。在这个过程中&#xff0c;高质…

[Redis#17] 主从复制 | 拓扑结构 | 复制原理 | 数据同步 | psync

目录 主从模式 主从复制作用 建立主从复制 主节点信息 从节点信息 断开主从复制关系 主从拓扑结构 主从复制原理 1. 复制过程 2. 数据同步&#xff08;PSYNC&#xff09; 3. 三种复制方式 一、全量复制 二、部分复制 三、实时复制 四、主从复制模式存在的问题 在…