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及以上版本方可使用。如有不到之处,请多多包涵。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Facebook海外企业广告账户是什么?有什么优势?

随着全球化的迅速发展&#xff0c;越来越多国内企业开始将目光转向海外市场&#xff0c;寻求更为广阔的商机与更高的发展空间。而在这个全球化的时代&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;自然成为了众多企业进军海外市场的首选平台之一。那么如果想…

flask轻松入门,概念讲解

Hello World Flask 是轻量级web框架&#xff0c;仅保留了核心功能&#xff1a; 请求响应处理模板渲染URL路由 文章目录 Hello Worldflask命令模式python命令模式两种模式对比修改入口文件配置flask命令修改python命令修改 修改端口和地址flask命令修改python命令修改 修改 URL …

java——顺序表

前言&#xff1a;顺序表是线性表的一种&#xff0c;它是较于数组更加灵活的一种储存方式。线性表通常是逻辑上是连续的一条直线&#xff0c;但在物理上不是连续的。java中已经实现好了一个顺序表&#xff0c;搭配泛型可以支持各种类型的使用&#xff0c;下面就来介绍该如何使用…

以太网:ARP和信息处理状态机+代码实现

ARP过程只需要一次发送和一次接受就可以完成了&#xff1b; 在实际实现协议栈的时候我个人认为要以主动ARP开始&#xff1b; 主动ARP&#xff1a;发送一次ARP请求&#xff0c;接受一个ARP报文&#xff1b; 使用这种方式的原因是上位机可能不知道你的IP地址&#xff08;当然如…

Mysql疑难报错排查 - Field ‘XXX‘ doesn‘t have a default value

项目场景&#xff1a; 数据库环境 &#xff1a;mysql8; 工程使用&#xff1a;MyBatisPlus 表情况&#xff1a; 问题描述 某一个插入语句使用了 MyBatisPlus 的 save 方法&#xff0c;因为end_time1 end_time2都并没有值&#xff0c;所以在MyBatisPlus默认情况下&#xff0c;…

如何使自己写的代码易读易懂?

〓● 如果代码可读性不佳、不容易理解&#xff0c;可能造成如下问题&#xff1a; 〓❏ 其他工程师浪费时间解读它&#xff1b; 〓❏ 误解导致引入缺陷&#xff1b; 〓❏ 其他工程师修改时破坏代码。 〓● 提高代码可读性&#xff0c;有时候可能使其变得更为冗长、占用更多的…

【Python】深入认识Python数据类型和变量

​​​​ 文章目录 1. 引言数据类型的重要性Python中的数据类型概述 2. 数字类型整型&#xff08;int&#xff09;浮点型&#xff08;float&#xff09;复数&#xff08;complex&#xff09; 3. 字符串类型字符串的定义与使用字符串操作方法 4. 布尔类型布尔值和布尔运算 5. 列…

docker网络详解

1. 网络模式 1.1 网络结构 当安装Docker以后&#xff0c;会自动创建三个网络。可以使用docker network ls命令列出这些网络。 $ docker network ls NETWORK ID NAME DRIVER SCOPE 440aefe8afa3 bridge bridge local aa8d6325580f host host …

02JAVA字符串和集合

1.字符串 1.String 介绍: String在java.lang包下,使用不需要导包,String代表字符串,带""字符串都是String类的对象 字符串的特点: 字符串不可变,他们的值在创建后不能被改变 字符串效果相当于(char[]),底层原理是字节数组(byte[]) String构造方法: String 变量名 ne…

chat-glm4,qwen1.5性能对比

modelMMLUC-EvalGSM8KHumanEvalglm-4-9b74.777.184.070.1qwen1.5-7b6174.162.536.0qwen1.5-14b67.678.770.137.8 数据来源是以下两个图。可以看到GLM4非常优秀&#xff0c;qwen应该也快要开源自己的新模型了&#xff0c;希望国内的大模型团队能够继续坚持&#xff0c;持续努力&…

AI框架之Spring AI与Spring Cloud Alibaba AI使用讲解

文章目录 1 AI框架1.1 Spring AI 简介1.2 Spring AI 使用1.2.1 pom.xml1.2.2 可实现的功能 1.3 Spring Cloud Alibaba AI1.4 Spring Cloud Alibaba AI 实践操作1.4.1 pom.xml1.4.2 配置文件1.4.3 对接文本模型1.4.4 文生图模型1.4.5 语音合成模型 1 AI框架 1.1 Spring AI 简介…

NSSCTF-Web题目5

目录 [SWPUCTF 2021 新生赛]error 1、题目 2、知识点 3、思路 [LitCTF 2023]作业管理系统 1、题目 2、知识点 3、思路 [HUBUCTF 2022 新生赛]checkin 1、题目 2、知识点 3、思路 [SWPUCTF 2021 新生赛]error 1、题目 2、知识点 数据库注入、报错注入 3、思路 首先…

浅谈InoDB中的行级锁

行级锁的类型&#xff1a; Record Lock&#xff0c;记录锁&#xff0c;仅仅把⼀条记录锁上&#xff0c;记录锁分为排他锁和共享锁。Gap Lock&#xff0c;间隙锁&#xff0c;锁定⼀个范围&#xff0c;但是不包含记录本身&#xff0c;只存在于可重复读隔离级别&#xff0c;⽬的是…

Oracle 重置system用户的密码

荆轲刺秦王 如果您忘记了Oracle数据库的密码&#xff0c;可以通过以下步骤来重置密码&#xff1a; Oracle 版本&#xff1a;linux 11g Release 11.2.0.4.0-64bit Froduction 1. 以SYSDBA权限登录到数据库。 conn / as sysdba 2. 停止数据库实例。 shutdown immediate; 3…

vue 文件预览mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml

vue 文件预览 图片、mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml 最近公司要做一个类似电脑文件夹的功能&#xff0c;支持文件夹操作&#xff0c;文件操作,这里就不说文件夹操作了&#xff0c;说说文件预览操作&#xff0c;本人是后端java开发&#xff0c;前端vue&#…

Nginx通过转发代理解决跨域问题

前后端分离开发WEB端&#xff08;浏览器&#xff09;&#xff0c;不可避免的就是要解决跨域问题&#xff0c;因为这是浏览器的一种安全机制&#xff0c;当请求的&#xff08;1&#xff09;域名、&#xff08;2&#xff09;端口、&#xff08;3&#xff09;协议 。其中的一项与源…

MySQL如何多表关联更新

在 MySQL 中,多表关联更新可以使用 UPDATE 语句与 JOIN 子句结合来实现。以下是一个多表关联更新的基本示例: 基本语法 UPDATE table1 JOIN table2 ON table1.column = table2.column SET table1.column = new_value, table2.column = new_value WHERE condition;

Linux系统安装APITable详细流程与远程访问本地平台数据分析

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 &#x1f4a1;推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击跳转到网站】 前言 v…

AMD显卡和英伟达显卡哪个好?

显卡是计算机中负责处理图形和视频输出的硬件设备&#xff0c;主要分为两种类型&#xff1a;AMD的A卡和NVIDIA的N卡。那么AMD显卡和英伟达显卡哪个好&#xff1f;怎么选&#xff1f; 答&#xff1a;不能一概而论地说哪个好&#xff0c;因为它们各有优势&#xff0c;选择应基于…

listbox有scrollviewer,点击后不会触发selectionchanged事件

这个问题是因为在ListBox中的ScrollViewer处于焦点状态时&#xff0c;SelectionChanged事件没有触发。这通常是因为ScrollViewer在处理鼠标事件时会优先于ListBox。 为了解决这个问题&#xff0c;可以通过以下方法来确保SelectionChanged事件在ListBox中被触发&#xff1a; 在…