2013-12-13 71 views
3

從文本文件中讀取一些字符串並將它們寫入文本文件中只存在一個小問題,這與文本的對齊有關。 {4}參數是需要格式化到右側的,以便它們全部垂直對齊。C#文本對齊

while (recordIn != null) 
{ 
    fields = recordIn.Split(DELIM); 
    emp.accNumber = Convert.ToInt32(fields[0]); 
    emp.lastName = fields[1]; 
    emp.firstName = fields[2]; 
    emp.funds = Convert.ToDouble(fields[3]); 
    double money = Convert.ToDouble(fields[3].ToString()); 


    if (money < 0) 
    { 
     Console.WriteLine("{0},{1},{2}, {3, 2}, {4}", emp.accNumber, emp.lastName, emp.firstName, emp.funds.ToString("F2"), creditOutput); 
    } 
    else 
    { 
     Console.WriteLine("{0},{1},{2}, {3, 2} {4}", emp.accNumber, emp.lastName, emp.firstName, emp.funds.ToString("F2"), debitOutput);    
    } 
    recordIn = reader.ReadLine(); 
} 

回答

1

您可以用製表符分隔的所有值:

Console.WriteLine("{0} \t {1} \t etc... ", emp.accNumber, emp.last name... 

或者你可以只添加一個標籤之前{4}正好對準這些。兩個標籤可能是必要的。

+0

\ t是我忘記了......簡單的事情滑倒了腦海!謝謝 – MeggMercer

+0

哈,沒問題。作爲一種獎勵,此方法在以.CSV文件打開時效果很好,如在Excel中。如果你選中所有的值。 – tjheslin1

4

您可以嘗試string.PadLeftstring.PadRight

你也可以做這樣的:

要對齊字符串使用左側的格式化 百通用逗號(右邊空格)( ,)後跟負數字符: String.Format(「{0,-10}」,text)。要正確對齊,請使用正數 數字:{0,10}。

0

我只是做了在Visual Studio 2012

Console.WriteLine("{0,200}", "SomeText"); 

它右對齊在200字符字段的 「SomeText」 則會以下。您可以左對齊「{0,-200}」;

Console.WriteLine("{0,-200}", "SomeText"); 

來自:http://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

格式項目 格式項的語法如下:

{ index[,alignment][ :formatString] } 

括號表示任選元素。打開和關閉括號是必需的。 (要在格式字符串中包含文字開頭或結尾大括號,請參閱複合格式文章中的「Escaping Braces」部分。) 例如,格式化貨幣值的格式項目可能如下所示: C#C + + VB

String.Format("{0,-10:C}", 126347.89m);   

格式項具有以下元素:

索引

其字符串表示將被包括在所述字符串中的這個位置上,參數的基於零的索引。如果此參數爲null,則該字符串中的此位置將包含一個空字符串。

比對

可選的。一個有符號整數,指示插入參數的字段的總長度以及它是右對齊(正整數)還是左對齊(負整數)。如果省略對齊,則將相應參數的字符串表示插入不帶前導或尾隨空格的字段中。

formatString

可選的。一個字符串,指定相應參數的結果字符串的格式。如果省略formatString,則會調用相應參數的無參數ToString方法以生成其字符串表示形式。如果指定formatString,則格式項引用的參數必須實現IFormattable接口。支持格式字符串的類型包括:

0

在格式項中使用對齊方式,如{4,10}中所示。這使得您的{4}列的字符寬度爲10個字符,並將內容向右對齊。完整語法:{ index[,alignment][ :formatString] }