2009-04-20 63 views
6

似乎String.Format不會將字符串格式化爲輸入。我做錯了什麼,或者這只是本地行爲?String.Format不格式化字符串

輸入:0.37

這是行不通的。

string x = String.Format("{0:P}", myString) 

輸出:0.37

這確實。

string x = String.Format("{0:P}", Convert.ToDecimal(myString)) 

輸出:37.00%

回答

9

我相信這是預期「複合格式的行爲。

您的第一個示例是嘗試將數字格式設置規則應用於字符串。你的第二個例子是試圖將數字格式化規則應用於可以有小數位的數字。

查看this article on MSDN瞭解更多信息。

2

您嘗試應用的格式選項僅適用於數字。在.NET中沒有關於CLR檢查字符串類型的智能字符串的概念。

2

我做錯了什麼,或者這只是本地行爲?

這是本機行爲。這基本上不是Format解釋字符串輸入的工作。 Format假設用戶提供正確的數據 - 在您的情況下,數字數據。一個字符串不是數字,即使代表一個數字(這是數值/語義與其表示/語法之間的CS中最重要的區別!)。