我只是想知道c#语言或.net框架中是否有内置的东西可以测试某些东西是否为整数
if (x is an int)
// Do something
在我看来可能有,但我只是一年级编程学生,所以我不知道。
答案 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);
答案 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
}