2011年9月8日 星期四

字串格式與對齊解說(三)數值篇

String.Format( String, Object )的使用方式有點類似之前C的printf()
舉例來看:

ResultStr = String.Format( "謝謝您在{1:##}分鐘內閱讀本文章第 {0:00###} 次了.",123,60);
ReadAmount = 123;
ResultStr = String.Format( "謝謝您在{1:##}分鐘內閱讀本文章第 {0:00###} 次了.",ReadAmount,60 );
這樣的語法,就能得到 ResultStr = "謝謝您在60分鐘內閱讀本文章第00123次了。也就是說,可以傳入由字串格式項目與參數的組合來達到串出所需字串的目的,而在 { } 兩個大括弧中間的,就是控制格式化的部分,而大刮號之間的第一個數字,是表示要用後面所給的第幾個參數,通常會是需要被格式化的「數字、時間、.....等等格式」,比方,以第二個例子來說,就會拿後面的參數60代到前面的{1}那邊,而參數ReadAmount則是會被代到前面的{0}的地方而 : 符號後面的部分,則是可以用很複雜的控制代碼,控制代碼,分成很多種。

我們先看常用的標準的格式代碼(格式碼通常不用在意大小寫,都適用)
----------------------------------------------------------------------------------------------
C 表示貨幣,並且可接著一個數字,來表示要的精度到小數第幾位,不接數字則會使用目前NumberFormatInfo物件所提供的預設貨幣精確度。 
例如:String.Format( "{0:C5}", 12345.678901234 )則會得到NT$12,345.67890  
 
D 表示十進位(只支援整數型別),並且可接著一個數字,來表示要顯示多少位數,不夠的部分會於左邊補零
例如:String.Format( "{0:D8}", 12345 )則會得到00012345 
 
E 表示科學符號,並且可接著一個數字,來表示要的精度到小數第幾位,不接數字則預設六位小數
例如:String.Format( "{0:E}", 12345.678901234 )則會得到1.234568E+004
 

F 表示浮點數,並且可接著一個數字,來表示要的精度到小數第幾位,不接數字則會使用目前 NumberFormatInfo 物件的 NumberDecimalDigits 屬性所提供的預設數值精確度。
例如:String.Format( "{0:F3}", 12345.678901234 )則會得到12345.679
 

G 表示一般,並且可接著一個數字,來並且可接著一個數字,來表示要顯示多少位數(包含整數與小數的部分),而可能轉為科學記號,也可能轉出浮點數,(說明文件說會挑以最精簡顯示方式來顯示,但很難懂),直接看範例
例如:String.Format( "{0:G3}", 12345.678901234 )則會得到123e+04
例如:String.Format( "{0:G4}", 12345.678901234 )則會得到1235e+04
例如:String.Format( "{0:G5}", 12345.678901234 )則會得到12346
例如:String.Format( "{0:G6}", 12345.678901234 )則會得到12345.7


N 表示數字,並且可接著一個數字,表示要的精度到小數第幾位,不接數字則會使用目前 NumberFormatInfo 物件的 NumberDecimalDigits 屬性所提供的預設數值精確度。
例如:String.Format( "{0:N3}", 12345.678901234 )則會得到12345.679
 

P 表示百分比,並且可接著一個數字,來表示要的精度到小數第幾位,不接數字則預設六位小數
例如:String.Format( "{0:E}", 12345.678901234 )則會得到1.234568E+004
 

X 表示16進位,並且可接著一個數字,來表示要顯示多少位數,不夠的部分會於左邊補零。這個X的大小寫,有意義,會指定輸出的16進位的英文部分要大寫還是小寫。
例如:String.Format( "{0:X8}", 123456 )則會得到0001E240



我們再看常用的自訂的格式代碼
----------------------------------------------------------------------------------------------
0 的用法是會讓轉出來的字串被數字取代,但是如果沒數字的地方,會補零。
# 的用法是會讓轉出來的字串被數字取代,但是如果沒數字的地方,不會有數字。
. 的用法是決定轉出的字串的小數點對齊位置。
\ 的用法是讓這些保留控制碼也可以被顯示出來。
其他符號都會直接被顯示在轉出的字串裡


例如:
String.Format( "{0:000000}", 1234 )則會得到001234
String.Format( "{0:000.000}", 1234.56 )則會得到1234.560
String.Format( "{0:######}", 1234.56 )則會得到1234
String.Format( "{0:###.###}", 1234.56 )則會得到1234.56
String.Format( "{0:###.000}", 1234.56 )則會得到1234.560




補充PadLft與PadRight

沒有留言:

張貼留言