首頁 » C#開發 » [C#] String.Format自訂數值格式應用

[C#] String.Format自訂數值格式應用

作者:

分類:

強大的C#字串處理上提供非常實用的功能,如果要限制數值類型(int, double, etc.)轉成字串時有特定的格式,在使用String.Format()給特定的pattern可以省下大量的程式判斷。例如小數位數、逗號、補0、固定長度、正負不同輸出…等。

自訂數值格式

如果C#提供的標準數值格式不符合需求時,可以考慮自訂格式,讓我們看看下面說明:

  • 0 表示零值預留位置
  • # 表示數字預留位置
  • . 表示小數點
  • , 表示群組分隔符號和數值範圍,並1000為一次分隔
  • % 表示百分比預留位置
  • ‰ 表示千分之一符號預留位置
  • E0 表示指數標記法
  • \ 表示跳脫字元
  • ‘string‘ 表示字串區段,可避免特定字元被格式化
  • ; 表示區段分隔符號,用於判斷>0; <0; =0給予不同格式[必學]

基本格式(0#)

1234.5678 ("00000") //01235
1234.5678 ("#####") //1235
0.45678 ("0.00") //0.46
0.45678 ("#.##") //.46

縮放範例(,)

表示群組分隔符號和數值範圍,並1000為一次分隔

2147483647 ("#,#")    //2,147,483,647
2147483647 ("#,#,,M") //2,147M

百分比(%)與千分比(‰)

*使用字串區段’%‘表示僅輸出%符號

0.3697 ("#0.00%")    //36.97%
0.3697 ("#0.00'%'")  //0.37%
0.03697 ("#0.00‰")   //36.97‰
0.03697 ("#0.00'‰'") //0.37‰

指數標記法(e)

987654 ("#0.0e0")         //98.8e4
1503.92311 ("0.0##e+00")  //1.504e+03
1.8901385E-16 ("0.0e+00") //1.9e-16

跳脫字元(\)與字串區段(‘your string’)

可避免特定字元被格式化

987654 ("\###00\#") //#987654#
68 ("# 'degrees'")  //68 degrees

區段分隔符號(;)

此功能為自訂格式時必學,用於判斷>0; <0; =0給予不同格式,舉例:

兩區段(“patternA;patternB”),A>=0、B<0。
三區段(“patternA;patternB”;patternC),A>0、B<0、C=0。

 12.345 ("#0.0#;(#0.0#);-\0-") //12.35
-12.345 ("#0.0#;(#0.0#);-\0-") //(12.35)
      0 ("#0.0#;(#0.0#);-\0-") //-0-

負數會比正值多一字元,當需要輸出相同長度字串時

 1234 ("0000#;-000#;") //01234
-1234 ("0000#;-000#;") //-1234
    0 ("0000#;-000#;") //00000

參考資料

「cian」的個人頭像

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *