如何知道变量是否包含整数或字符串?

时间:2013-12-06 14:05:56

标签: c#

我只想知道变量是否包含正整数值。

目前我在做:

int APPOeeVersion = 
    Convert.ToInt32(ConfigurationManager.AppSettings["OEEVersion"]);

这里我只是想知道APPOeeVersion是否包含Int值。如果不需要显示错误消息,因为它是无效格式。请帮帮我,我已经在几个论坛上查了但没找到确切的解决方案。

4 个答案:

答案 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找到的正则表达式将起作用。

也许我只是愚蠢或过度思考这个,但似乎你必须给出一些限制