2013-10-09 152 views
3

我需要生成具有固定lenght文本行:C#中固定長度的字符串

我有現在的問題是:

StringBuilder _sb = new StringBuilder(); 

_sb.Append(string.Format("{0,5}", "MM")); // serie to cancel 
_sb.Append(string.Format("{0,20}", "45444")); // folio to cancel 
_sb.Append(string.Format("{0,30}", "AC1122")); // account number (optional) 

這個偉大的工程,因爲產生的55個字符的固定lenght字符串。

問題來當例如可選值就像一個空字符串:

StringBuilder _sb = new StringBuilder(); 

_sb.Append(string.Format("{0,5}", "MM")); // serie to cancel 
_sb.Append(string.Format("{0,20}", "45444")); // folio to cancel 
_sb.Append(string.Format("{0,30}", "")); // account number (optional) 

具有的String.Format內空字符串,則不會給予一個固定的長度,我仍然需要有一個30個字符長度。

任何線索非常感謝!

感謝

+0

使用String.PadLeft方法:HTTP:// MSDN。 microsoft.com/en-us/library/92h5dc07.aspx有一個你想要的寬度的字符串。 – Aybe

+0

如果您通過空白區域會發生什麼情況? '_sb.Append(string.Format(「{0,30}」,「」));' – Jason

+0

您的代碼仍然會生成一個55個字符的長字符串,最後30個字符是空格字符。 –

回答

5

您可以使用PadLeft方法:

StringBuilder _sb = new StringBuilder(); 

_sb.Append("MM".PadLeft(5)); // serie to cancel 
_sb.Append("45444".PadLeft(20)); // folio to cancel 
_sb.Append("".PadLeft(30)); // account number (optional) 
+0

當它清空字符串墊離開不起作用 – VAAA

+0

對不起,我不應該把String.Format放在那裏。檢查我的編輯。 – Szymon

+0

不知道發生了什麼,我的編輯沒有通過。現在好點了。 – Szymon

2

你確定嗎?嘗試添加一個分隔符,只要看看那裏的子串結束

StringBuilder _sb = new StringBuilder(); 
_sb.Append(string.Format("{0,5}|", "MM")); // serie to cancel 
_sb.Append(string.Format("{0,20}|", "45444")); // folio to cancel 
_sb.Append(string.Format("{0,30}|", "")); // account number (optional 
Console.WriteLine(">" + _sb.ToString() + "<"); 

> MM|    45444|        |< 
+0

你應該使用_sb.AppendFormat() – DrKoch

0

不知道什麼是最好的方式,但下面應該工作:

string appended = string.Format("{0,5}", "MM"); 
appended += string.Format("{0,20}", "45444"); 
appended += string.Format("{0,30}", ""); 
相關問題