首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 字串格式化輸出完整指南:標準與自訂格式大全

     編輯:關於C#

前言

在 C# 開發中,將數值、日期或物件轉換為特定格式的字串是極為常見的需求。無論是顯示貨幣、百分比、科學記號,還是自訂位數補零、千分位分隔,掌握 string.Format、ToString 以及插值字串($"")的格式指定字串,能大幅提升程式碼可讀性與維護性。本文整理了最完整的標準格式與自訂格式對照表,並附上實際輸出範例,方便隨時查閱。

一、標準數值格式字串

標準格式採用 {格式指定字元}[精度] 形式,例如 C2、N0、E3。下表列出常用格式與輸出範例(以 int a = 12345678、double b = 1234.12543 為例):

格式說明int 輸出double 輸出
C / c貨幣(依目前文化特性)¥12,345,678.00¥1,234.13
C3貨幣,3 位小數¥12,345,678.000¥1,234.125
D / d十進位(僅整數型別)12345678❌ 錯誤
E / e科學記號1.234568E+0071.234125E+003
F / f定點數(預設 2 位小數)12345678.001234.13
N / n數值(含千分位,預設 2 位小數)12,345,678.001,234.13
X / x十六進位(僅整數型別)BC614E❌ 錯誤
G / g通用(最精簡表示)123456781234.12543
R / r往返(確保精度不遺失,僅浮點數)❌ 錯誤1234.12543
P / p百分比(乘 100 加 %)1,234,567,800.00%123,412.54%

程式碼範例

int a = 12345678;
double b = 1234.12543;

// string.Format 用法
string s1 = string.Format("{0:C}", a);      // ¥12,345,678.00
string s2 = string.Format("{0:N2}", b);     // 1,234.13

// ToString 用法
string s3 = a.ToString("C");                // ¥12,345,678.00
string s4 = b.ToString("F3");               // 1234.125

// C# 6+ 插值字串(推薦)
string s5 = $"{a:C}";                       // ¥12,345,678.00
string s6 = $"{b:E2}";                      // 1.23E+003

二、自訂數值格式字串

當標準格式無法滿足需求時,可使用自訂格式字元組合出專屬格式。常用字元如下:

字元名稱說明範例 (1234)範例輸出
0零佔位符不足位數補 0000000001234
#數字佔位符不足位數不補字元#######1234
.小數點指定小數點位置000.0001234.000
,千分位/縮放單一 , 為千分位;連續 , 為每 3 位除以 10000,0 / 0,,1,234 / 12
%百分比數值乘 100 並加 %0.00%123400.00%
'文字'常值字串單引號內內容原樣輸出'ID:'0ID:1234
\跳脫字元下一個字元視為常值\#0#1234

實戰範例

int a = 12345678;
double b = 87654321.12543;

// 固定 6 位數,不足補 0
Console.WriteLine($"{a:000000}");        // 12345678 (超過 6 位不截斷)
Console.WriteLine($"{a:D6}");            // 12345678 (標準 D6 同效果)

// 千分位分隔
Console.WriteLine($"{a:N0}");            // 12,345,678
Console.WriteLine($"{b:N2}");            // 87,654,321.13

// 縮放顯示(每個 , 除以 1000)
Console.WriteLine($"{a:0,}");            // 12346 (四捨五入)
Console.WriteLine($"{a:0,,}");           // 12
Console.WriteLine($"{a:0,,,}");          // 0

// 百分比格式
Console.WriteLine($"{0.1234:P2}");       // 12.34%
Console.WriteLine($"{0.1234:#.##%}");    // 12.34%

// 自訂字串
Console.WriteLine($"{a:'編號:'0}");      // 編號:12345678
Console.WriteLine($@"{a:\#0}");          // #12345678

三、DateTime 常用格式補充

雖然本文主題為數值格式化,但日期格式同樣重要,常用標準格式如下:

  • d:短日期 2024/01/15
  • D:長日期 2024年1月15日
  • t:短時間 14:30
  • T:長時間 14:30:45
  • f:完整日期時間(短時間)2024年1月15日 14:30
  • F:完整日期時間(長時間)2024年1月15日 14:30:45
  • g:一般日期時間(短時間)2024/01/15 14:30
  • G:一般日期時間(長時間)2024/01/15 14:30:45
  • yyyy-MM-dd HH:mm:ss:自訂常用格式 2024-01-15 14:30:45

四、最佳實踐建議

  1. 優先使用插值字串($""):語法更直觀,效能相當,編譯器會自動優化為 string.Format。
  2. 指定文化特性:跨國應用請使用 value.ToString("C", CultureInfo.GetCultureInfo("zh-TW")) 避免伺服器預設文化特性導致顯示錯誤。
  3. 避免重複格式化:在迴圈或高頻呼叫中,將格式字串提取為常數或靜態唯讀欄位。
  4. 善用 FormattableString:延遲格式化或記錄原始格式與參數,適用於日誌、EF Core 查詢等進階場景。

總結

C# 提供極為豐富的格式化功能,從標準貨幣、科學記號到自訂位數補零、縮放顯示,幾乎能滿足所有顯示需求。熟練掌握這些格式字串,不僅能寫出更簡潔的程式碼,也能避免手動字串拼接帶來的 Bug。建議收藏本文對照表,開發時隨查隨用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved