2012-12-24 88 views
3

因此,我正在格式化一個字符串,我需要將它排列在一個表中,但此字符串的字符數不確定。無論如何要讓每一列的字符串都在同一個位置?到目前爲止,我有:帶有未定義字符數的字符串格式c#

ostring += "Notes\t\t" 
+ "  : " 
+ employees[number].Notes 
+ "\t\t" 
+ employees[number].FirstNotes 
+ "\t\t" 
+ employees[number].SecondNotes; 

我用同樣的方式在其他行,但他們有數字的預定數量,然而,這並不讓我不能使用字符串修飾符就像我會喜歡。

什麼我需要做的任何想法?

+1

如果你絕對必須正確排列它們,並且尺寸未知,那麼你可以做的唯一的事情就是遍歷所有的值,並找出最大尺寸是多少。 – Jon

+0

什麼是你把數據放入表,一個HTML表? –

+0

您可以使用列表視圖來顯示這個..// –

回答

5

您可以使用String.PadRight()字符串強制爲特定的大小,而不是使用標籤。

2

當使用String.Format項目格式有以下語法:

{ index[,alignment][ :formatString] } 

因此可以指定對準指示到其中的參數被插入字段的總長度,以及它是否是正確的對齊(一正整數)或左對齊(負整數)。

而且最好是使用StringBuilder建立字符串:

var builder = new StringBuilder(); 
var employee = employees[number]; 
builder.AppendFormat("Notes {0,20} {1,10} {2,15}", 
    employee.Notes, employee.FirstNotes, employee.SecondNotes); 
0

你必須首先遍歷每個條目找到最大的一個,所以你知道鋤頭寬,使列,是這樣的:

var notesWidth = employees.Max(Notes.Length); 
var firstNotesWidth = employees.Max(FirstNotes.Length); 
// etc... 

然後你可以墊列正確寬度:

var output = new StringBuilder(); 
foreach(var employee in employees) 
{ 
    output.Append(employee.Notes.PadRight(notesWidth+1)); 
    output.Append(employee.FirstNotes.PadRight(firstNotesWidth+1)); 
    // etc... 
} 

不要在循環中做很多字符串「加」(「1」+「2」+「3」+ ...)。改爲使用StringBuilder。它效率更高。

+0

即時通訊嘗試使用.pad正確的方法,但它不工作即時通訊仍然得到像我以前這裏是相同的即時通訊正在做:ostring + =「Notes \ t \ t」+「:」; var output = new StringBuilder(); output.Append(僱員[數字] .Notes.PadRight(24)); output.Append(僱員[數字] .FirstNotes.PadRight(34)); ostring + = output + employees [數字] .SecondNotes; ostring + = Environment.NewLine – compprog254

+0

你原來的問題並沒有說明你以前有過什麼,所以我不知道還有什麼可以幫助你。 – CodingWithSpike