我有一个允许用户输入价格的表单,例如10.00
。
但是,由于表单是purley文本,用户可以输入$10.00
或10.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;
}
然而,这将剥离.
。任何想法如何做到这一点?
答案 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;
}
}