2012-03-19 124 views
8
while (rdr.Read()) 
{ 
    Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]); 
} 

這段代碼中的{0,-35}是什麼意思?C#字符串中的大括號是什麼意思?

+0

使用你不明白的代碼是不明智的。我建議你在哪裏找到這個代碼,問作者。 – 2012-03-19 15:26:02

回答

7

更簡單的線將是:

Console.WriteLine("{0}", 5); 

該函數接受任何數量的參數。它們將被插入相應索引處的字符串中。在這種情況下,索引0保存整數5.結果是字符串「5」。

現在,您可以選擇指定格式字符串以及索引。像這樣:

Console.WriteLine("{0:0.00}", 5); 

這格式化50.00,導致5.00

這就是數字的情況,但我認爲這些更容易解釋。對於字符串,「格式」意味着對齊。另請注意,您使用逗號而不是冒號來分隔索引和格式。

alignment(可選):這表示字符串的最小長度。 正立值,字符串參數將右對齊,如果 字符串不夠長,字符串將填充空格在左邊 。 否定值,字符串參數將被保留 ,如果字符串不夠長,字符串將填充 空間在右邊。如果未指定此值,我們將默認 爲字符串參數的長度。

因此,在你例如:

  • {0,-35}意味着串具有至少爲35個字符,leftjustified(在端空間填充)。
  • {1,2}表示字符串必須至少有2個字符,rightjustified(前面的空格填充)。

我推薦this article,以及string.Format documentation

7

這些括號是值爲字符串的佔位符。

因此,rdr["ProductName"]將被格式化爲字符串的第一個括號。並且rdr["Total"]將被格式化爲字符串的第二個括號。

提供這樣的:

rdr["ProductName"] = "My Product"; 
rdr["Total"] = 2.98; 

然後你會輸出到控制檯:

產品:我的產品總計:2.98

問題更新後:

The {0,-35}部分如果爲了對齊的目的。有關格式化和對齊的更多信息on C#'s official documentation

+0

感謝您的回覆,但那麼0,35和1,2是什麼意思 – rosebrit3 2012-03-19 11:32:55

+0

對於字符串,它是用於對齊的信息。 – 2012-03-19 11:33:48

3

它是對齊串空間

要對齊串向右或向左使用靜態​​方法的String.Format。要將字符串與左側對齊(右側空格),請使用帶逗號(,)的格式化模板,後跟負數字符:String.Format(「{0,-10}」,text)。要正確對齊,請使用正數:{0,10}。

看看

http://www.csharp-examples.net/align-string-with-spaces/

+0

-1請證明 – 2012-03-19 11:35:04

+0

它現在已經更新,它不是-1 :) – rosebrit3 2012-03-19 11:38:33

+0

雖然這只是一半的答案。是的,'-35'用於對齊,但這不是格式字符串佔位符的唯一目的。 – Joey 2012-03-19 12:11:00

2

那些{}支架的字符串格式化的目的。例如,你的情況rdr [「ProductName」] 已經給出了一個格式說明符{0,-35} ...,它將與填充到右邊的空格左對齊。

6

"Product: {0,-35} Total: {1,2}"這樣的字符串被稱爲複合格式 字符串

大括號內的第一個數字(從零開始)被稱爲格式項目並且對應於複合格式字符串之後的參數的位置。這些數字可以選擇後跟一個逗號(,)和一個minimum width以應用。

最小寬度對於對齊列很有用。如果該值爲負數,則結果將左對齊;否則,它將被右對齊。例如:

Console.WriteLine("Product: {0,-35} Total: {1,2}", "1stProduct", 99); 
Console.WriteLine("Product: {0,-35} Total: {1,2}", "SecondProduct", 111); 

結果:

Product: 1stProduct       Total: 99 
Product: SecondProduct      Total: 111 

你可以看到,因爲我們已經指定的35字符的最小寬度爲產品名稱,他們將永遠佔據至少那麼多空間在結果字符串中,而不管它們的實際長度(分別是上面例子中的10和13)。而且由於我們已指定-35(負數),產品名稱將左對齊。

相關問題