我有一个用C#编写的Windows窗体应用程序。
我正在寻找一种方法来验证我的价格textBox,以便它只接受双重格式的价格,例如允许0.01& 1200.00但在用户输入字符时提供错误。
我会将代码看起来与
类似String price = tbx_price.Text.Trim();
if price is not a number
{
error message
}
else{
...
我可以用什么方法来检查价格字符串是否只包含数字?请注意,我要求用户能够使用小数位,所以'。'应该允许角色。
答案 0 :(得分:7)
使用decimal.TryParse
:
decimal d;
if (!decimal.TryParse(price, out d)){
//Error
}
如果您还要验证价格(145.255
无效):
if (!(decimal.TryParse(price, out d)
&& d >= 0
&& d * 100 == Math.Floor(d*100)){
//Error
}
答案 1 :(得分:3)
您可以使用decimal.TryParse()
进行测试。
例如:
decimal priceDecimal;
bool validPrice = decimal.TryParse(price, out priceDecimal);
如果您无法确定线程文化是否与用户的文化相同,请使用接受文化格式的TryParse()
重载(也可以设置为货币的数字格式):< / p>
public bool ValidateCurrency(string price, string cultureCode)
{
decimal test;
return decimal.TryParse
(price, NumberStyles.Currency, new CultureInfo(cultureCode), out test);
}
if (!ValidateCurrency(price, "en-GB"))
{
//error
}
答案 2 :(得分:0)
除了使用标记为已接受的答案以避免文化对价格的问题外,您始终可以使用此
Convert.ToDouble(txtPrice.Text.Replace(".", ","));
Convert.ToDouble(txtPrice.Text.Replace(",", "."));
这取决于您在应用中管理转化的方式。
PS:我无法评论答案,因为我还没有获得必要的声誉。