如果字符串包含整数,如何为字符串设置文本框

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-catchParse() 的更高级版本使用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.231e-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

【讨论】:

! 代替== falseif (!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);
 

【讨论】:

以上是关于如果字符串包含整数,如何为字符串设置文本框的主要内容,如果未能解决你的问题,请参考以下文章

如果字符串包含整数,如何调整该字符串的文本框

如何为 TextView 设置最小宽度(以字符为单位)?

如何为css中的文本设置特定的像素或字符宽度限制

如何为文本框设置数据类型[重复]

当.name 属性在设计时未知时,如何为列表框控件的单击事件编程

如何为列表框中的每个项目设置不同的工具提示文本?