将字符串转换为十进制的最佳方法是什么?

时间:2015-01-01 17:24:03

标签: c# string decimal

当我想将字符串转换为十进制时,我这样做:

decimal decParseado;
if (decimal.TryParse(txtTexto.Text, out decParseado) == true)
{
    MessageBox.Show("Es decimal: " + decParseado.ToString());
}
else
{
    MessageBox.Show("No es decimal");
}

txtTexto是我视图中的textBox。当用户写" 12.5"结果是正确的,小数是12.5,但是当用户写" 12,5"时,结果是125。

我发现一个解决方案就是以这种方式从全球化中获取小数分隔符:

string strSeparadorDeCulturaActual = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;

然后,替换","或"。"避免用户犯错,可以写两个字符中的任何一个。

if (strSeparadorDeCulturaActual == ".")
{
    txtTexto.Text= txtTexto.Text.Replace(',', '.');
}
else
{
    txtTexto.Text= txtTexto.Text.Replace('.', ',');
}

但我想知道是否有更好的解决方案来解决这个问题。我希望用户,写","或"。",解析是正确的。

非常感谢。

1 个答案:

答案 0 :(得分:2)

真正的,非常非常简单的解决方案是阻止用户通过为,事件添加事件处理程序来键入KeyPress altogather并将此代码放在那里:

if (e.KeyChar == ',')
{
    e.Handled = true;
}