[英]Decimal.Parse various strings
您好,我可能有一些字符串,例如"1,1"
或"1.1"
或"1"
或""
,我需要從每個字符串中獲取相同格式的結果,以便可以將其保存為SQL Db中的數字(8,2 )
var ci = CultureInfo.InvariantCulture.Clone() as CultureInfo;
prikaz.Parameters.AddWithValue("@p_ub_c", Decimal.Parse(p_ub_c.Text.Replace(',', '.') == string.Empty ? "0.00" : p_ub_c.Text, ci));
傳遞的字符串是: "2500,00"
但也可以是""
或"2500.00"
這些值需要保存在sql numeric(8,2)中,當文本框p_ub_cis
空時,字符串為0,我得到了以下信息:System.FormatException輸入的字符串格式不正確。
有人可以幫我解決這個問題嗎?
感謝您的時間
您的問題在於以下代碼片段:
p_ub_c.Text.Replace(',', '.') == string.Empty ? "0.00" : p_ub_c.Text
這說“取我的文字,然后用“。”替換“,”,然后如果結果為空字符串,請使用“ 0.00”,否則請使用“文字”。 換句話說,您將丟失替換的結果。
如果更改它以存儲“替換”的結果並對其進行解析,則應該可以解決此問題。 提防有人輸入例如“ 1,000.1”,因為您最終會得到“ 1.000.1”,這仍然是無效數字。
您永遠不會使用Replace
返回的內容,應按以下方式使用它:
string.IsNullOrEmpty(p_ub_c.Text) ? "0.00" : p_ub_c.Text.Replace(',', '.');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.