我正在尝试检查文本框是否包含数字。问题是它总是返回它包含一个非数字字符。 我尝试了几种方法,但似乎都没有。
我尝试过的方法之一是:
if( Regex.IsMatch(tb.Text.Trim(), @"^[0-9]+$")) // tb.Text is the textbox
我在文本框中输入的内容无关紧要,它总是返回它包含非数字字符(我尝试输入1-9,'a','b')
答案 0 :(得分:4)
您可以将字符串解析为特定的数字类型,即
double result;
if (!double.TryParse(tb.Text, out result))
{
//text is not a valid double;
throw new Exception("not a valid number");
}
//else the value is within the result variable
您的正则表达式似乎只需要整数值,因此您应该使用int.TryParse
或long.TryParse
代替。
快速而肮脏的测试程序:
void Main()
{
TestParse("1");
TestParse("a");
TestParse("1234");
TestParse("1a");
}
void TestParse(string text)
{
int result;
if (int.TryParse(text, out result))
{
Console.WriteLine(text + " is a number");
}
else
{
Console.WriteLine(text + " is not a number");
}
}
结果:
1 is a number
a is not a number
1234 is a number
1a is not a number
答案 1 :(得分:2)
您可以替换Regex
:
if(Regex.IsMatch(tb.Text.Trim(), @"[0-9]"))
或者为此:
if(Regex.IsMatch(tb.Text.Trim(), @"\d"))
答案 2 :(得分:1)
你可以使用TryParse:
int value;
bool IsNumber = int.TryParse(tb.Text.Trim(), out value);
if(IsNumber)
{
//its number
}
答案 3 :(得分:0)
private void btnMove_Click(object sender, EventArgs e)
{
string check = txtCheck.Text;
string status = "";
for (int i = 0; i < check.Length; i++)
{
if (IsNumber(check[i]))
status+="The char at "+i+" is a number\n";
}
MessageBox.Show(status);
}
private bool IsNumber(char c)
{
return Char.IsNumber(c);
}