如何将字符串(蒙版)转换为十进制?

时间:2012-08-21 09:18:38

标签: c# type-conversion maskedtextbox

我在文本框中有掩码“99:99”我需要转换为十进制。 例如:字符串“12:34”转换为12.34

我创建方法:

private decimal ConvertStringMaskToDecimal(string strMask)
{
    var split = strMask.Split(':');
    if(split.Length==2)
    {
        decimal returnValue = decimal.Parse(split[0]) + decimal.Parse(split[1])/100;
        return returnValue;
    }
    else
    {
        throw new ArgumentException("strMask not valid");
    }
}

这段代码工作但我认为代码不正确,如何解决这个问题

3 个答案:

答案 0 :(得分:3)

正如我在评论Oded的回答中所说的那样:不建议将点硬编码为小数点分隔符。

This picture解释了原因。

我建议:

using System.Globalization;

// (...)
decimal.Parse(strMask.Replace(":", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator));

代替。

或者,正如Henk Holterman所说:

decimal.Parse(strMask.Replace(':', '.'), CultureInfo.InvariantCulture);

达到同样的效果(不会在非美国机器上崩溃)。

答案 1 :(得分:1)

在解析之前,只需将:替换为.

decimal.Parse(strMask.Replace(':', '.'), CultureInfo.InvariantCulture)

请注意使用CultureInfo.InvariantCulture确保正确解释.

答案 2 :(得分:-1)

使用小数点decimal.Parse替换冒号:后可以使用.

decimal.Parse(strMask.Replace(':', '.'), CultureInfo.InvariantCulture)