C#测试以查看字符串是否为整数?

时间:2009-11-17 23:05:30

标签: c# .net string integer

我只是想知道c#语言或.net框架中是否有内置的东西可以测试某些东西是否为整数

if (x is an int)
   // Do something

在我看来可能有,但我只是一年级编程学生,所以我不知道。

12 个答案:

答案 0 :(得分:134)

使用int.TryParse方法。

string x = "42";
int value;
if(int.TryParse(x, out value))
  // Do something

如果成功解析它将返回true,out结果将其值作为整数。

答案 1 :(得分:14)

我认为我记得在int.TryParse和int.Parse Regex和char.IsNumber之间进行性能比较,char.IsNumber最快。无论如何,无论表现如何,这里还有一种方法。

        bool isNumeric = true;
        foreach (char c in "12345")
        {
            if (!Char.IsNumber(c))
            {
                isNumeric = false;
                break;
            }
        }

答案 2 :(得分:11)

如果您只想检查传递变量的类型,可以使用:

    var a = 2;
    if (a is int)
    {
        //is integer
    }
    //or:
    if (a.GetType() == typeof(int))
    {
        //is integer
    }

答案 3 :(得分:11)

对于Wil P解决方案(见上文),您也可以使用LINQ。

var x = "12345";
var isNumeric = !string.IsNullOrEmpty(x) && x.All(Char.IsDigit);

答案 4 :(得分:3)

简单......使用这段代码

bool anyname = your_string_Name.All(char.IsDigit);

如果你的字符串有整数其他明智的假,它将返回true ...

答案 5 :(得分:2)

此函数将告诉您字符串是否仅包含字符0123456789。

private bool IsInt(string sVal)
{
    foreach (char c in sVal)
    {
         int iN = (int)c;
         if ((iN > 57) || (iN < 48))
            return false;
    }
    return true;
}

这与int.TryParse()不同,后者会告诉您字符串是否为整数 例如。 &#34; 123 \ r \ n&#34;将从int.TryParse()返回TRUE,但从上面的函数返回FALSE。

......仅仅取决于你需要回答的问题。

答案 6 :(得分:1)

private bool isNumber(object p_Value)
    {
        try
        {
            if (int.Parse(p_Value.ToString()).GetType().Equals(typeof(int)))
                return true;
            else
                return false;
        }
        catch (Exception ex)
        {
            return false;
        }
    }

我写的东西回来了。上面有一些很好的例子,但我的价值仅为2美分。

答案 7 :(得分:1)

如果只想检查它是否为字符串,则可以将“out int”关键字直接放在方法调用中。根据dotnetperls.com网站,旧版本的C#不允许这种语法。通过这样做,您可以减少程序的行数。

string x = "text or int";
if (int.TryParse(x, out int output))
{
  // Console.WriteLine(x);
  // x is an int
  // Do something
}
else
{
  // x is not an int
}

如果你还想获得int值,你可以这样写。

方法1

string x = "text or int";
int value = 0;
if(int.TryParse(x, out value))
{
  // x is an int
  // Do something
}
  else
{
  // x is not an int
}

方法2

string x = "text or int";
int num = Convert.ToInt32(x);
Console.WriteLine(num);

参考:https://www.dotnetperls.com/parse

答案 8 :(得分:1)

也许这可能是另一个解决方案

try
{
    Console.Write("write your number : ");
    Console.WriteLine("Your number is : " + int.Parse(Console.ReadLine()));
}
catch (Exception x)
{
    Console.WriteLine(x.Message);
}
Console.ReadLine();

答案 9 :(得分:0)

我已编码了大约2周,并创建了一个简单的逻辑来验证整数已被接受。

    Console.WriteLine("How many numbers do you want to enter?"); // request a number
    string input = Console.ReadLine(); // set the input as a string variable
    int numberTotal; // declare an int variable

    if (!int.TryParse(input, out numberTotal)) // process if input was an invalid number
    {
        while (numberTotal  < 1) // numberTotal is set to 0 by default if no number is entered
        {
            Console.WriteLine(input + " is an invalid number."); // error message
            int.TryParse(Console.ReadLine(), out numberTotal); // allows the user to input another value
        }

    } // this loop will repeat until numberTotal has an int set to 1 or above

如果您不喜欢将动作声明为循环的第三个参数,也可以在FOR循环中使用上述内容,例如

    Console.WriteLine("How many numbers do you want to enter?");
    string input2 = Console.ReadLine();

    if (!int.TryParse(input2, out numberTotal2))
    {
        for (int numberTotal2 = 0; numberTotal2 < 1;)
        {
            Console.WriteLine(input2 + " is an invalid number.");
            int.TryParse(Console.ReadLine(), out numberTotal2);
        }

    }

如果你不想要一个循环,只需删除整个循环括号

答案 10 :(得分:-1)

c#7中有简单的方法

// if input 10    
var input = int.TryParse(Console.ReadLine(), out var output);
// input = true, output = 10

// or if input will be "abcd", you will get:
// input = false, output = 0
输入中的

将为false或true,如果可以转换,则输出中的数字将被转换。

答案 11 :(得分:-1)

也可以试试这个:

    var ix=Convert.ToInt32(x);
    if (x==ix) //if this condition is met, then x is integer
    {
        //your code here
    }