Decimal.Parse各种字符串

时间:2013-11-30 10:21:50

标签: c# sql sql-server format

您好我可能有例如"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输入字符串的格式不正确。

有人可以帮我解决这个问题吗?

感谢您的时间

2 个答案:

答案 0 :(得分:2)

您的问题在于以下代码片段:

p_ub_c.Text.Replace(',', '.') == string.Empty ? "0.00" : p_ub_c.Text

这表示“取我的文字并替换”,“带”。“,然后如果结果为空字符串,则使用”0.00“,否则使用”文本“。换句话说,您将丢失替换的结果。

如果你更改它以存储替换的结果并解析它,它应该解决问题。请注意有人输入例如“1,000.1”,但你最终会得到“1.000.1”,这仍然是一个无效的数字。

答案 1 :(得分:2)

您永远不会使用Replace返回的内容,您应该按以下方式使用它:

string.IsNullOrEmpty(p_ub_c.Text) ? "0.00" : p_ub_c.Text.Replace(',', '.');