2011-06-23 156 views
2

我想要對齊值。 我不知道爲什麼出現這種情況:字符串格式化

 string value = ""; 

     value += string.Format("{0,-10}", "value"); 
     value += string.Format("{0,5}", "value"); 

     value += Environment.NewLine; 

     value += string.Format("{0,-8}", "val"); 
     value += string.Format("{0,7}", "value"); 

     MessageBox.Show(value); 

如果我之前檢查值我做「MessageBox.Show()是正確的結果是:

value  value 
val  value 

,因爲他們應該,但當我做MessageBox.show()然後他們得到這樣的:

value  value 
    val  value 

我真的不能你理解爲什麼它用show()改變字符串?同樣的事情發生時,我試圖打印「價值」,然後它不正確對齊。

順便說一句:這只是一個測試代碼,所以你可以理解我與真正的代碼有問題。

回答

3

這可能是由以下事實造成的,在消息框中使用的字體是不monospaced,這意味着每個字符佔用的等量的水平空間。您在Visual Studio調試器中使用的字體可能是,這就是爲什麼填充看起來完全不同。

如果使用製表符而不是空格進行格式設置,您可以嘗試提供更好的結果。

+0

\ t當打印文本到打印機時似乎不工作 – syncis

3

這是因爲通過MessageBox.Show使用的字體沒有固定的寬度......

+0

我猜這是一樣的打印文本到打印機?不是固定的寬度? – syncis

+0

是的,但當然這取決於你使用的字體 –

0

根據this回答的方法是使用\t作爲列分隔符。

這絕對涉及檢查每一列的所有單詞的長度。這樣你就可以知道是使用單個\t還是雙重\t\t等。

+0

\ t當打印文本到打印機似乎不工作 – syncis

+0

@syncis對不起,似乎我也支付很少關注。我認爲你唯一的任務是通過MessageBox.Show()顯示值,這可以使用上面提到的方法來實現。在你的情況下,你可能想嘗試創建自己的消息框提到[這裏](http://stackoverflow.com/questions/232066/messagebox-show-font-change-23/232077#232077)。然後,您可以切換爲非等寬字體,您也可以將它用於打印目的。 –