引言
字符串是編程中使用較廣的一種數(shù)據(jù),它由數(shù)字、字母、下劃線等組成。在使用過(guò)程中會(huì)對(duì)字符串進(jìn)行格式化。在C#語(yǔ)言中,.NET 6及以上使用字符串插值($""語(yǔ)法)對(duì)字符串格式化。
$語(yǔ)法
.NET 6 及以上提供的一種新的語(yǔ)法糖,它的作用相當(dāng)于對(duì)String.format的簡(jiǎn)化。使用$可以將字符串字面量標(biāo)識(shí)為內(nèi)插字符串,內(nèi)插字符串將可設(shè)置其格式。
語(yǔ)法結(jié)構(gòu)
$("{<Expression>[,<alignment>][:<formatString>]}")
Expression:內(nèi)插字符串的字面量表達(dá)式。alignment:對(duì)齊方式,正則右對(duì)齊;負(fù)則為左對(duì)齊。formatString:表達(dá)式結(jié)果類(lèi)型支持的格式字符串。
應(yīng)用方法
1、基本使用字符串內(nèi)插:在字符串前用$,然后在{}中填寫(xiě)表達(dá)式。如下示例:// 使用 $ 構(gòu)建文件完整路徑
string fileName = $"{AppDomain.CurrentDomain.BaseDirectory}20240518.log";
// 在控制臺(tái)輸出變量fileName的值
Console.WriteLine(fileName);
// 顯示時(shí)間
Console.WriteLine($"今天是:{DateTime.Now}");
2、設(shè)置寬度與對(duì)齊:在Expression加逗號(hào),然后填寫(xiě)寬度長(zhǎng)度,為正右對(duì)齊。為負(fù)則左對(duì)齊。如下示例:// 定義蘋(píng)果單價(jià)變量
double applePrice = 9.45;
// 定義香蕉單價(jià)變量
double bananaPrice = 11.5;
// 輸出標(biāo)題
Console.WriteLine($"|{"名稱",-7}|{"Price",7}|");
// 輸出內(nèi)容
Console.WriteLine($"|{"蘋(píng)果",-7}|{applePrice,7}|");
Console.WriteLine($"|{"香蕉",-7}|{bananaPrice,7}|");
// 執(zhí)行結(jié)果
|名稱 | Price|
|蘋(píng)果 | 9.45|
|香蕉 | 11.5|
3、忽略轉(zhuǎn)義字符:如果在字符串里需包含一些特殊字符,那就會(huì)用到轉(zhuǎn)義字符,如果要忽略轉(zhuǎn)義字符,我們可以使用@符號(hào)。對(duì)于$的語(yǔ)法,可以將@放在$前或后都可以。如下示例:
// 文件名稱
string logFileName = "20240504.log";
// 使用 $ 定義完整路徑
string filePath = $@"D:\""{{{logFileName}}}""";
// 輸出
Console.WriteLine(filePath);
// 執(zhí)行結(jié)果
D:\"{20240504.log}"
注:輸出{ 字符需雙寫(xiě),輸出"字符需雙寫(xiě)。4、使用條件運(yùn)算:將表達(dá)式放到括號(hào)()里。如下示例:// 定義數(shù)學(xué)分?jǐn)?shù)
double mathScore = 92;
// 根據(jù)分?jǐn)?shù)判斷是否合格,并輸出
Console.WriteLine($"{(mathScore>90 ? "合格" : "不合格")}");
5、格式化字符串:可以參考String.Format 對(duì)日期、數(shù)字、貨幣等格式。下面給出一些示例:
#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格式符帶指定位數(shù) 輸出 ¥21.3,¥20.80 此次的21.26截取會(huì)自動(dòng)四舍五入位21.3
Console.WriteLine($"{21.26:C1},{20.8:C3}");
#endregion
#region 數(shù)字
// 使用 D 格式符 固定的位數(shù)位3 輸出 021,位數(shù)不夠以0補(bǔ)充
Console.WriteLine($"{21:D3}");
// 使用 D 格式符 固定的位數(shù)位2 輸出 142,位數(shù)超數(shù)指定為,則按原數(shù)字輸出
Console.WriteLine($"{142:D2}");
// 使用 N 格式符 輸出 132.00 默認(rèn)為小數(shù)點(diǎn)后面兩位
Console.WriteLine($"{132:N}");
// 使用 N 格式符指定保留小數(shù)位 輸出 123.246 自動(dòng)四舍五入
Console.WriteLine($"{123.2458:N3}");
// 使用 P 格式符 輸出 21.58% 默認(rèn)為小數(shù)點(diǎn)后面兩位 自動(dòng)四舍五入
Console.WriteLine($"{0.21583:P}");
// 使用 P 格式符指定保留小數(shù)位 輸出 21.6% 自動(dòng)四舍五入
Console.WriteLine($"{0.21583:P1}");
#endregion
#region 占位符
// 使用 0 占位符 輸出 1346.23
Console.WriteLine($"{1346.23:0000.00}");
// 使用 0 占位符 輸出 0154.03 超出小數(shù)被截取會(huì)自動(dòng)四舍五入
Console.WriteLine($"{154.029:0000.00}");
// 使用 # 數(shù)字占位符 輸出 13295.02 超出小數(shù)被截取會(huì)自動(dòng)四舍五入
Console.WriteLine($"{13295.019:###.##}");
// 使用 # 數(shù)字占位符 輸出124 小數(shù)位0,則不被顯示
Console.WriteLine($"{124.029:####.#}");
#endregion
小結(jié)
以上使用$語(yǔ)法對(duì)字符串格式化的介紹,注意這一用法需在.NET 6及以上版本方可使用。如有不到之處,請(qǐng)多多包涵。
該文章在 2024/6/8 22:44:21 編輯過(guò)