引言
字符串是編程中使用較廣的一種數據,它由數字、字母、下劃線等組成。在使用過程中會對字符串進行格式化。在C#語言中,.NET 6及以上使用字符串插值($""語法)對字符串格式化。
$語法
.NET 6 及以上提供的一種新的語法糖,它的作用相當于對String.format的簡化。使用$可以將字符串字面量標識為內插字符串,內插字符串將可設置其格式。
語法結構
$("{<Expression>[,<alignment>][:<formatString>]}")
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
小結
以上使用$語法對字符串格式化的介紹,注意這一用法需在.NET 6及以上版本方可使用。如有不到之處,請多多包涵。
該文章在 2024/6/8 22:44:21 編輯過