检查有效的数字输入 - 控制台应用程序

时间:2012-03-13 08:24:55

标签: c#

我对一个简单的控制台应用程序有一点问题,我想检测用户是否输入了格式正确的数值。 也就是说,不接受诸如1212sss之类的值或诸如asjkq12323或单个字符之类的值。我想只接受纯整数值。

这是我试过的

bool detectNumber(string s)
{
   int value=0;
   Int.TryParse(s,out value);
   return (value!=0)?true:false;
}

我感谢任何帮助。谢谢soooo多,,,,,

4 个答案:

答案 0 :(得分:2)

int value = 0;
bool ok = int.TryParse(s, out value);
return ok;

答案 1 :(得分:1)

string line = Console.ReadLine(); 
int value;
if (int.TryParse(line, out value)) 
{
    Console.WriteLine("Integer here!");
}
else
{
    Console.WriteLine("Not an integer!");
}

答案 2 :(得分:1)

有几种方法可以只测试数字:

首先,永远不要使用Int,因为它是最大值,使用intInt32

解析

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

Convert.ToInt32()

// throws ArgumentNullExceptionint
result1 = Int32.Parse(null);

// doesn't throw an exception, returns 0
int result2 = Convert.ToInt32(null);

则IsNumeric()

using Microsoft.VisualBasic;
// ......
bool result = Information.IsNumeric("123");

模式匹配

string strToTest = "123";
Regex reNum = new Regex(@"^\d+$");
bool isNumeric = reNum.Match(strToTest).Success;

答案 3 :(得分:0)

你的代码工作正常,你只能稍微重构一下。以下代码较短但完全相同:

static bool IsInt32(string s)
{
    int value;
    return Int32.TryParse(s, out value);
}