我有一個從數據庫獲取數據並將其作爲字符串存儲的類。格式化類的數字
sAnswer
可以是任何數據類型,通常是int。當它是一個int,我試圖讓它格式化爲逗號分隔符。 (1000000 - > 1,000,000)我該怎麼做?
使用Format
像var val = string.Format("{0:n0}", sAnswer);
不起作用。
我有一個從數據庫獲取數據並將其作爲字符串存儲的類。格式化類的數字
sAnswer
可以是任何數據類型,通常是int。當它是一個int,我試圖讓它格式化爲逗號分隔符。 (1000000 - > 1,000,000)我該怎麼做?
使用Format
像var val = string.Format("{0:n0}", sAnswer);
不起作用。
將不是字符串的值轉換爲字符串時,會發生格式化。您無法將格式應用於已經是字符串的值。你將不得不在string
轉換回int
暫時
string val = String.Format("{0:n0}", Int32.Parse(sAnswer));
可以影響Int32.Parse
嘗試使用的NumberStyles
常數
string val = String.Format("{0:n0}", Int32.Parse(sAnswer,
NumberStyles.AllowLeadingWhite |
NumberStyles.AllowTrailingWhite|
NumberStyles.AllowExponent));
或者簡單地通過使用按位組合轉換的方式枚舉常量,給你一個最大的靈活性。如果sAnswer
可以包含無效的條目(例如像一個空字符串),執行安全轉換
string val;
int i;
if (Int32.TryParse(sAnswer, out i)) {
val = String.Format("{0:N0}", i);
} else {
val = ""; // Assign a default value here
}
這是否對你的工作
int answerInt;
if (int.TryParse(sAnswer, out answerInt))
{
sAnswer = answerInt.ToString("#,0", CultureInfo.InvariantCulture)
}
如果你打算用'out'參數覆蓋'answerInt',那麼如果它沒有被解析,它就會被扔掉(設置爲「0」),所以不要指定默認值。 – 2013-03-06 14:25:27
@ChrisSinclair,謝謝我的不好 – Kane 2013-03-06 14:25:56
你不能將'string'強制轉換爲int。你將得到異常'「不能將類型'字符串'轉換爲'int'」'。 – 2013-03-06 14:27:04
你是什麼意思「有逗號分隔符」嗎?你的意思是,如果它是1000000這樣的大數字,它將被格式化爲「1,000,000」? – 2013-03-06 14:21:47
這是正確的,我會改變那在OP – Mike 2013-03-06 14:23:16