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