2010-11-19 51 views
24

Im新的C#編程。有人可以請解釋下面的代碼:Console.WriteLine方法中的格式字符串

Console.WriteLine("{0}{1,10}", "Face", "Frequency"); //Headings 
Console.WriteLine("{0,4}{1,10}",someval,anotherval); 

筆者瞭解到,這款打印值的兩列給出的標題和{0}是指給定的第一個參數。但是格式字符串{x,y}的含義是什麼?

回答

53

它向左側添加填充。爲記住各種字符串格式化模式非常有用的是以下小抄:

.NET String.Format Cheat Sheet

正值向左,負添加填充添加填充到右側

 
Sample         Generates 
String.Format("[{0, 10}]", "Foo");  [∙∙∙∙∙∙∙Foo] 
String.Format("[{0, 5}]", "Foo");  [∙∙Foo] 
String.Format("[{0, -5}]", "Foo");  [Foo∙∙] 
String.Format("[{0, -10}]", "Foo"); [Foo∙∙∙∙∙∙∙] 
+0

感謝您的回覆0xA3。如果我理解正確,那麼是不是意味着{1,10}會立即打印第二個參數和10個空格? – Joe 2010-11-19 09:58:18

+0

@Joe:不,填充意味着字符串填充了空格,直到指定的長度,請參閱我的答案中的示例。 – 2010-11-19 09:59:57

+2

據我所知,這張備忘單是完全錯誤的!使用錯誤的索引,並且正面/負面的對齊與實際發生的事情相反。所以,爲了產生'[∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'',你實際上會做'String.Format(「[{0,10}]」,「Foo」);'' – 2010-11-19 10:11:54

3

請檢查this以獲取非常好的字符串格式參考。

3

這是一個填充值...如果該參數不被指定的長度,它把空間中。

例如如果您有{0,10},{0}的參數是「Blah」,則打印的實際值將是"Blah<SPACE><SPACE><SPACE><SPACE><SPACE><SPACE>" ... Blah,包含6個額外空格以組成一個長度爲10的字符串

ps - 不知道如何把實際空格...需要查找SO常見問題無疑

8

當你看到{x,y}x代表爭論的指數和y排列,按規定here。完整的語法如下:

{index[,alignment][:formatString]}