user2455383
user2455383

Reputation: 11

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.

Upvotes: 1

Views: 772

Answers (4)

Daniel Kotin
Daniel Kotin

Reputation: 326

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

Upvotes: 0

cederlof
cederlof

Reputation: 7403

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

Upvotes: 1

rae1
rae1

Reputation: 6144

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
}

Upvotes: 1

Habib
Habib

Reputation: 223422

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)

Upvotes: 8

Related Questions