簡體   English   中英

十進制解析各種字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM