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

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

相关文章:

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

自C#6.0开始提供一个新的语法糖&#xff0c;即"$" 符号&#xff0c;配合“{}”使用&#xff0c;它的作用除了是对String.format的简化&#xff0c;还可设置其格式模板&#xff0c;实现了对字符串的拼接优化。 语法格式&#xff1a; $"string {变量表达式}” 语…...

Nacos源码学习-本地环境搭建

本文主要记录如何在本地搭建Nacos调试环境来进一步学习其源码&#xff0c;如果你也刚好刷到这篇文章&#xff0c;希望对你有所帮助。 1、本地环境准备 Maven: 3.5.4 Java: 1.8 开发工具&#xff1a;idea 版本控制工具: git 2、下载源码 官方仓库地址 &#xff1a;https://git…...

windows 好工具

Windows文件夹目录大小分析工具WizTree...

计算机运行时提示错误弹窗“由于找不到 quazip.dll,无法继续执行代码。”是什么原因?“quazip.dll文件缺失”要怎么解决?

计算机运行时错误解析&#xff1a;解决“quazip.dll缺失”问题指南 在软件开发和日常计算机使用中&#xff0c;我们经常会遇到各种运行时错误。今天&#xff0c;我们将深入探讨一个常见的错误提示&#xff1a;“由于找不到quazip.dll&#xff0c;无法继续执行代码。”这一弹窗…...

创造未来:The Sandbox 创作者训练营如何赋能全球创造者

创作者训练营让创造者有能力打造下一代数字体验。通过促进合作和提供尖端工具&#xff0c;The Sandbox 计划确保今天的元宇宙是由一个个创造者共同打造。 2024 年 5 月&#xff0c;The Sandbox 推出了「创作者训练营」系列&#xff0c;旨在重新定义数字创作。「创作者训练营」系…...

R语言对简·奥斯汀作品中人物对话的情感分析

项目背景 客户是一家文学研究机构&#xff0c;他们希望通过对简奥斯汀作品中人物对话的情感分析&#xff0c;深入了解作品中人物的情感变化和故事情节的发展。因此&#xff0c;他们委托你进行一项情感分析项目&#xff0c;利用“janeaustenr”包中的数据集来构建情感分析模型。…...

股指期货基差为正数,这是啥意思?

在股指期货的世界里&#xff0c;有个挺重要的概念叫“基差”。说白了&#xff0c;基差就是股指期货的价格和它对应的现货价格之间的差价。今天&#xff0c;咱们就来聊聊当这个基差为正数时&#xff0c;到底意味着啥。 基差是啥&#xff1f; 先复习一下&#xff0c;基差 股指…...

黑马程序员MybatisPlus/Docker相关内容

Day01 MP相关知识 1. mp配置类&#xff1a; 2.条件构造器&#xff1a; 具体的实现例子&#xff1a; ①QuerryWapper&#xff1a; ②LambdaQueryWrapper: 3.MP的自定义SQL 4.MP的Service层的实现 5.IService下的Lambda查询 原SQL语句的写法&#xff1a; Lambda 查询语句的…...

使用 Vue 和 Canvas-Confetti 实现烟花动画特效

在开发中&#xff0c;为用户提供具有视觉冲击力的反馈是一种提升用户体验的好方法。今天&#xff0c;我们将结合 Vue 框架、canvas-confetti 和 Lottie 动画&#xff0c;创建一个动态对话框动画&#xff0c;其中包含炫酷的烟花特效。 效果图&#xff1a; 效果简介 当用户触发…...

【银河麒麟操作系统真实案例分享】内存黑洞导致服务器卡死分析全过程

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 现象描述 机房显示器连接服务器后黑屏&#xff…...

如何加强游戏安全,防止定制外挂影响游戏公平性

在现如今的游戏环境中&#xff0c;外挂始终是一个困扰玩家和开发者的问题。尤其是定制挂&#xff08;Customized Cheats&#xff09;&#xff0c;它不仅复杂且隐蔽&#xff0c;更能针对性地绕过传统的反作弊系统&#xff0c;对游戏安全带来极大威胁。定制挂通常是根据玩家的需求…...

SpringBoot整合knife4j,以及会遇到的一些bug

这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”&#xff0c;文中的讲解内容简单清晰&#xff0c;易于学习与理解&#xff0c;下面请大家跟着小编的思路慢慢深入&#xff0c;一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧&#xff01; 一…...

城电科技|光伏廊道是什么?安装光伏廊道有什么好处?

光伏廊道是什么&#xff1f;光伏廊道专门设计用于集中安装太阳能光伏发电系统的建筑物或构筑物&#xff0c;它可以将光伏转换成可以用于供电的清洁绿电。光伏廊道通常由阳能电池板、太阳能电池、控制器、逆变器、混凝土、钢材等材料组成&#xff0c;具备发电、坚固、耐用、防水…...

当DHCP服务器分配了同一个IP地址

当DHCP服务器分配了同一个IP地址给多个设备时&#xff0c;这通常会导致网络问题&#xff0c;如IP地址冲突&#xff0c;进而影响设备的网络连接。以下是详细的分析和解决步骤&#xff1a; 原因分析&#xff1a; IP地址租约未过期&#xff1a; 租约管理&#xff1a;DHCP服务器维…...

储能能量自动化调配装置功能介绍

随着可再生能源的快速发展&#xff0c;光伏发电已成为全球能源结构转型的关键技术之一。与此同时&#xff0c;储能技术作为实现光伏发电稳定输出的核心技术&#xff0c;得到了广泛关注。在企业电网中&#xff0c;光伏储能系统的运维管理不仅关乎能源利用效率&#xff0c;还涉及…...

vite5+vue3+Ts5 开源图片预览器上线

images-viewer-vue3&#xff1a;一款Vue3的轻量级图像查看器&#xff0c;它基于Flip动画技术&#xff0c;支持PC和h5移动网页预览照片&#xff0c;如果它是Vue3开发的产品。 npm开源地址:https://www.npmjs.com/package/images-viewer-vue3?activeTabreadme Flip 动画 < …...

【深度学习】深入解析长短期记忆网络(LSTMs)

长短期记忆网络&#xff08;Long Short-Term Memory networks, LSTMs&#xff09;是一种特殊的递归神经网络&#xff08;RNN&#xff09;&#xff0c;专门设计用来解决标准 RNN 在处理长序列数据时的梯度消失和梯度爆炸问题。LSTMs 在许多序列数据任务中表现出色&#xff0c;如…...

从Web3到智能合约:探索新一代数据交互模式

随着互联网技术的不断演进&#xff0c;Web3的到来标志着互联网的一个新纪元。与传统的Web2相比&#xff0c;Web3倡导去中心化、更加开放和透明的网络架构&#xff0c;而智能合约则是其中的核心技术之一。本文将介绍Web3与智能合约的概念、应用以及它们如何改变数据交互模式&…...

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…...

如何利用Python爬虫获得商品类目

在当今数字化时代&#xff0c;获取和分析数据的能力对于任何希望在市场上保持竞争力的企业来说都是至关重要的。对于电子商务平台和市场研究公司而言&#xff0c;获取商品类目数据尤为重要&#xff0c;因为这些数据可以帮助他们更好地理解市场趋势、优化产品目录并制定有效的营…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...