不學 JAVA 換學 C# 之覺得心累 - L1:ch3 格式化輸出

AdSense

格式語法

{index[,alignment][:formatString]}

索引元件 Index Component

下面的例子呼叫 WriteLine(String, Object)WriteLine(String, Object, Object)WriteLine(String, Object, Object, Object) 來顯示字串。其實也就是 WriteLine(String, Object[])

WriteLine 第一個參數是格式字串,字串的參數指定符 012 被包在花括號 {} 內,形成 {index},它指的是後方 Object[] 參數陣列的索引號。

1
2
3
4
5
6
7
8
9
10
string name = "Jenifer";
int age = 3;
string color = "yellow";

Console.WriteLine("My name is {0}", name);
Console.WriteLine("My name is {0}. I am {1} years old.", name, age);
Console.WriteLine("My name is {0}. I am {1} years old. I love {2} color", name, age, color);

// 可以這樣玩
Console.WriteLine("My name is {2}. I am {0} years old. I love {1} color", age, color, name);

對齊元件 Alignment Component

帶正負號的整數 (Signed Integer),它用來表示欄位寬度。如果 alignment 的值小於字串的長度,alignment 會被忽略,改使用字串的長度當做欄位寬度。如果 alignment 為正數,會靠右對齊;如果 alignment 為負數,則會靠左對齊。如果填補有必要,則會使用空白字元 (White Space)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Console.WriteLine("-----------------------------");
Console.WriteLine("Name | Age | Color");
Console.WriteLine("-----------------------------");
Console.WriteLine(String.Format("{0,-10} | {1,-5} | {2,8}", "Jenifer", 3, "yellow"));
Console.WriteLine(String.Format("{0,-10} | {1,-5} | {2,8}", "Marry", 10, "red"));
Console.WriteLine(String.Format("{0,-10} | {1,-5} | {2,8}", "Kevin", 15, "black"));
Console.WriteLine("-----------------------------");

// 輸出:
// -----------------------------
// Name | Age | Color
// -----------------------------
// Jenifer | 3 | yellow
// Marry | 10 | red
// Kevin | 15 | black
// -----------------------------

格式字串元件 Format String Component

標準數值格式字串(Standard Numeric Format Strings)、自訂或其他等。

標準數值格式字串用來格式化一般數字類型,採用 [format specifier][precision specifier] 格式。

  • 格式規範 format specifier:單一字母字元,指定數字格式的類型,例如貨幣 (c 或 C:貨幣值) 或百分比 (p 或 P:乘以 100 並加上百分比符號來顯示的數字。)。
  • 精確度規範 precision specifier:是一個整數,會影響所產生字串的位數。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
double number = 123.456;

Console.WriteLine("Currency: {0:C}", number);
Console.WriteLine("Currency: {0:C3}", number);

// 輸出:
// Currency: $123.46
// Currency: $123.456


double number2 = -0.39671;
Console.WriteLine("Percent: {0:P}", number2);
Console.WriteLine("Percent: {0:P1}", number2);

// 輸出:
// Percent: -39.67 %
// Percent: -39.7 %

參考資料:
Composite formatting
標準數值格式字串