我只想知道变量是否包含正整数值。
目前我在做:
int APPOeeVersion =
Convert.ToInt32(ConfigurationManager.AppSettings["OEEVersion"]);
这里我只是想知道APPOeeVersion是否包含Int值。如果不需要显示错误消息,因为它是无效格式。请帮帮我,我已经在几个论坛上查了但没找到确切的解决方案。
答案 0 :(得分:8)
使用int.TryParse
,如果失败则不会引发异常,如果解析成功/失败,则会返回bool
值。
string str = "1234";
int APPOeeVersion;
if (int.TryParse(str, out APPOeeVersion))
{
//parsing successful
}
else
{
//not an integer
}
如果解析成功,您将在out
参数中获得已解析字符串的值。
要检查正数并解析,您可以使用以下检查:
if (int.TryParse(str, out APPOeeVersion) && APPOeeVersion > 0)
答案 1 :(得分:1)
int.TryParse
将是方法:http://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx
int APPOeeVersion;
if(!int.TryParse(ConfigurationManager.AppSettings["OEEVersion"], out APPOeeVersion) || APPOeeVersion < 0){
//throw error
}
//use variable APPOeeVersion
答案 2 :(得分:1)
如果您要测试正整数,则可能需要使用uint.TryParse
,因为int.TryParse
将允许负值。
uint appoEeVersion;
var oeeVersionValue = ConfigurationManager.AppSettings["OEEVersion"];
if(!uint.TryParse(OEEVersionValue , out appoEeVersion))
{
// Error, not a positive integer
}
else
{
// Success, user value
}
答案 3 :(得分:0)
我对你的措辞感到有些困惑。你的意思是变量是是一个整数还是包含一个整数? 如果是前者,则发布的解决方案将正常工作。
你能保证变量只是一个没有十进制表示法的整数(例如:2 vs 2.0)?如果没有,您可能需要使用decimal.parse instead。
整数解析将在其他十进制值上失败,因为它们不是有效的整数。
Decimal APPOeeVersion;
if (Decimal.TryParse(input,out APPOeeVersion))
{
Console.WriteLine("Successfully parse: {0} to {1}", input, APPOeeVersion);
}
else
{
Console.WriteLine("Failed to parse {0}", input);
}
Console.Write("\nEnter a number to test: ");
然后使用其他逻辑确保结果为正。 如果你想知道它是否包含一个整数,那么像here找到的正则表达式将起作用。
也许我只是愚蠢或过度思考这个,但似乎你必须给出一些限制