【发布时间】:2019-07-21 00:56:30
【问题描述】:
我目前在文本框上进行错误检查时遇到了一些问题。它将一个变量(称为价格)作为 Double。它的目的是输入一个数字,当单击一个按钮时,它会将其添加到显示在不同文本框中的运行总数中。
现在在检查文本框是否为空时出现错误:
!string.IsNullOrWhiteSpace(txtAddItem.Text)
但是,我不确定如何错误检查是否输入了数字以外的字符串或字符。任何想法都表示赞赏。
【问题讨论】:
我目前在文本框上进行错误检查时遇到了一些问题。它将一个变量(称为价格)作为 Double。它的目的是输入一个数字,当单击一个按钮时,它会将其添加到显示在不同文本框中的运行总数中。
现在在检查文本框是否为空时出现错误:
!string.IsNullOrWhiteSpace(txtAddItem.Text)
但是,我不确定如何错误检查是否输入了数字以外的字符串或字符。任何想法都表示赞赏。
【问题讨论】:
方法一:正则表达式
您应该尝试使用正则表达式。正则表达式(简称 Regex)用于将字符串与模式匹配。例如,如果您只想允许整数:
Regex r = new Regex(@"^[0-9]+$")
Regex 类有一个.IsMatch(string s) 方法,其中s 是您要针对该模式进行测试的字符串。
方法二:try-catch 和 Parse()
另一种可能对初学者更友好的方法是 try-catch 块。 (我假设您的 TextBox 的名称是 TextBox1,并且您将总和值存储在 runningSum 变量中。)
try {
double x = double.Parse(TextBox1.Text);
runningSum += x;
catch (ArgumentException ax) {
//handle if it is not a number in the TextBox
}
方法三:TryParse()
结合try-catch 和Parse() 的更高级版本使用double.TryParse() 方法,该方法根据转换是否成功返回真/假值。
double x;
if (double.TryParse(TextBox1.Text, out x)) {
runningSum += x;
} else {
//handle if it is not a number in the TextBox.
}
【讨论】:
double 写一个合适的正则表达式是一件很了不起的事情(让我提供一些正确的值作为例子:.1,@987654336 @、1.23、1e-2、-1E+1)
^-?[0-9]*\.?[0-9]+$):1E+1 和 -1e-1(两者均有效但无效匹配)
如果值需要是有效的double,您可以使用“double.TryParse”。比如:
if (double.TryParse(txtAddItem.Text, out double price) == false)
{
// Show error or clear textbox
}
else
{
// Value is valid, add to total
}
【讨论】:
! 代替== false 即if (!double.TryParse...)
您可以使用Double.TryParse()
double number;
if (Double.TryParse(txtAddItem.Text, out number)) {
Console.WriteLine("'{0}' is a valid double: {1}", value, number);
} else {
Console.WriteLine("Unable to parse '{0}' as a valid double", value);
}
【讨论】: