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.pswp.cn/web/23242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23242.shtml
英文地址,請注明出處:http://en.pswp.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; 在…