C#testing,看看一个string是一个整数?

我只是好奇,是否有东西内置到C#语言或.NET框架,testing看看是否是一个整数

if (x is an int) // Do something 

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

使用int.TryParse方法。

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

如果成功分析它将返回true,并且输出结果将具有整数值。

我想我记得在int.TryParse和int.Parse Regex和char.IsNumber和char.IsNumber之间的性能比较是最快的。 无论如何,无论performance如何,还有更多的方法可以做到。

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

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

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

如果你只想检查传入variables的types,你可以使用:

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

这个函数会告诉你,如果你的string只包含字符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(),它会告诉你,如果你的string可以是一个整数。
例如。 “123 \ r \ n”将从int.TryParse()返回TRUE,但从上述函数返回FALSE。

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

它的简单…使用这段代码

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

它会返回true如果你的string有其他明智的错误整数…

我已经编写了大约2周,并创build了一个简单的逻辑来validation一个整数已被接受。

  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); } } 

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

 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美分价值。

在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 

在input你会有错误或真实的,并在输出,你将有转换的数字,如果它可以被转换。