简体   繁体   中英

How to Know whether Variable Contains a integers or Strings?

I just want to know, whether a variable contains a positive integer value.

Currently I am doing:

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

Here i just want to know whether APPOeeVersion Contains Int value or not. If not Need to show a error message as it is invalid format. Please help me out i have checked with several forums but not find exact solution.

Use int.TryParse , It will not raise an exception in case of failure and would give you bool value back if parsing was successful/unsuccessful.

string str = "1234";
int APPOeeVersion;
if (int.TryParse(str, out APPOeeVersion))
{
    //parsing successful
}
else
{
    //not an integer
}

If parsing is successful you will get the value of parsed string in your out parameter.

For checking a positive number and parsing you can have the check like:

if (int.TryParse(str, out APPOeeVersion) && APPOeeVersion > 0)

int.TryParse would be the method: 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

If you want to test for a positive integer, then you might need to use uint.TryParse since int.TryParse will allow negative values.

uint appoEeVersion;
var oeeVersionValue = ConfigurationManager.AppSettings["OEEVersion"];
if(!uint.TryParse(OEEVersionValue , out appoEeVersion))
{
     // Error, not a positive integer
}
else
{
     // Success, user value
}

I'm a little confused by your wording. Do you mean the variable is an integer or contains an integer? If the former, then the solutions posted will work fine.

Are you guaranteed that the variable will only ever be an integer with no decimal notation (eg: 2 vs 2.0)? If not, you might need to use decimal.parse instead .

Integer parsing will fail on the other decimal values since they are not valid integers.

            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: ");

Then then use additional logic to ensure that the result is positive. If you want to know whether it contains an integer, then a regular expression like the ones found here will work.

Maybe I'm just dumb or overthinking this, but it seems like you have to give a few more constraints

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM