如果字符串包含整数,如何为字符串设置文本框
Posted
技术标签:
【中文标题】如果字符串包含整数,如何为字符串设置文本框【英文标题】:How to I condition a text box for a string if it holds a integer 【发布时间】:2019-07-21 00:56:30 【问题描述】:我目前在文本框上进行错误检查时遇到了一些问题。它将一个变量(称为价格)作为 Double。它的目的是输入一个数字,当单击一个按钮时,它会将其添加到显示在不同文本框中的运行总数中。
现在在检查文本框是否为空时出现错误:
!string.IsNullOrWhiteSpace(txtAddItem.Text)
但是,我不确定如何错误检查是否输入了数字以外的字符串或字符。任何想法都表示赞赏。
【问题讨论】:
Identify if a string is a number的可能重复 【参考方案1】:方法一:正则表达式
您应该尝试使用正则表达式。正则表达式(简称 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
)
嗯,大多数情况下,您实际上并不需要自己编写这些东西。你可以谷歌他们。我认为从这种方法中带走的东西是它的存在。 :) 看,在 SO 上找到一个模式大约需要 1 分钟:***.com/questions/33939770/…
反例表示可接受的答案模式 (^-?[0-9]*\.?[0-9]+$
):1E+1
和 -1e-1
(两者均有效但无效匹配)
我想知道是否有人会在 2019 年在 TextBox 中输入“1E+1”。但你是对的,这是真的!【参考方案2】:
如果值需要是有效的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...)
【参考方案3】:
您可以使用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);
【讨论】:
以上是关于如果字符串包含整数,如何为字符串设置文本框的主要内容,如果未能解决你的问题,请参考以下文章