Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Check If A String Value Is Numeric

0.00/5 (No votes)
7 Mar 2006 1  
A way to determine if a string value has a specific Style Number And/OR Culture

Introduction

This article will give you a way to determine if a given string has a valid number style (Integer, Float, Currency, etc.) according to specified/current culture.

Background

In all VBScript and Visual Basic applications, there is a built-in function called IsNumeric / IsCurrency, but in C# there is no built-in function with the same functionality.
I have investigated a little and found out that all given solutions always use try catch to find out if the given string value can be parsed.

That seemed like a good way to test it, BUT what if the number contains commas or a currency sign?
Then I have to add another check to this code and strip down the non numeric sign and test the result.
Here I present a simple way that is supported by C#.

The Solution

In the code shown below, I actually use a built-in functionality of C# to determine if a given string value stands up to the requirements I want.

public bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)
{
    Double result;
    return Double.TryParse(val,NumberStyle,
		System.Globalization.CultureInfo.CurrentCulture,out result);
}

The above function allow me to test if the given string stands up to one or more of the following styles:

  • Hex Number
  • Number
  • Currency
  • Float

A more detailed list and explanation regarding System.Globalization.NumberStyles can be found here.

Examples

If you want to test for an integer number, then do the following:

isNumeric("42000", System.Globalization.NumberStyles.Integer)

If you want to test for an integer number separated with commas, then do the following:

isNumeric("42,000", System.Globalization.NumberStyles.Integer | 
	System.Globalization.NumberStyles.AllowThousands)

Using Other Cultures

I use the current culture as shown in the code below.
A list of all available culture names can be obtained here.

public bool isNumeric
    (string val, System.Globalization.NumberStyles NumberStyle, string CultureName)
{
    Double result;
    return Double.TryParse(val,NumberStyle,new System.Globalization.CultureInfo
				(CultureName),out result);
}

There are many ways to approach this problem, I chose the one that suits beginner levels and does not involve any Regular Expression which requires a higher level of expertise.

If you are interested in a solution that involves Regular Expressions, please take a look at the following links:

Enjoy and tell me your findings.

History

  • 7th March, 2006: Initial post

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here