将字符串转换为十进制 - 保留数字

时间:2013-02-21 18:46:01

标签: c#

我有一个允许用户输入价格的表单,例如10.00

但是,由于表单是purley文本,用户可以输入$10.0010.00 for book。 我无法改变UI,这必须在引擎盖下完成。 所以基本上我只想要一个十进制结果的使用类型。

我开始这样做了

public decimal FilterPrice(dynamic price) {
    string convertPrice=price.ToString();

    var filterNumber=
        from letter in convertPrice
        where char.IsDigit(letter)
        select letter;

    return something;
}

然而,这将剥离.。任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:5)

您可以使用简单的Regex解决它。

    public bool TryGetPreisAsDecimal(string price, out decimal convertedPrice)
    { 
        Match match = Regex.Match(price,@"\d+(\.\d{1,2})?");

        if (match != null)
        {
            convertedPrice = decimal.Parse(match.Value);
            return true;
        }
        else
        {
            convertedPrice = 0.0m;
            return false;
        }
    }