How to check if a String is a numeric type in Java?

Answer

his is generally done with a simple user-defined function (i.e. Roll-your-own \"isNumeric\" function).

Something like:

publicstaticboolean isNumeric(String str){try{double d =Double.parseDouble(str);}catch(NumberFormatException nfe){returnfalse;}returntrue;}

However, if you\'re calling this function a lot, and you expect many of the checks to fail due to not being a number then performance of this mechanism will not be great, since you\'re relying upon exceptions being thrown for each failure, which is a fairly expensive operation.

An alternative approach may be to use a regular expression to check for validity of being a number:

publicstaticboolean isNumeric(String str){return str.matches(\"-?\\\\d+(\\\\.\\\\d+)?\");//match a number with optional \'-\' and decimal.}

Be careful with the above RegEx mechanism, though, as it\'ll fail if your using non-latin (i.e. 0 to 9) digits. For example, arabic digits. This is because the \"\\d\" part of the RegEx will only match [0-9] and effectively isn\'t internationally numerically aware. (Thanks to OregonGhost for pointing this out!)

Or even another alternative is to use Java\'s built-in java.text.NumberFormat object to see if, after parsing the string the parser position is at the end of the string. If it is, we can assume the entire string is numeric:

publicstaticboolean isNumeric(String str){NumberFormat formatter =NumberFormat.getInstance();ParsePosition pos =newParsePosition(0);
  formatter.parse(str, pos);return str.length()== pos.getIndex();}

All string Questions

Ask your interview questions on string

Write Your comment or Questions if you want the answers on string from string Experts
Name* :
Email Id* :
Mob no* :
Question
Or
Comment* :
 





Disclimer: PCDS.CO.IN not responsible for any content, information, data or any feature of website. If you are using this website then its your own responsibility to understand the content of the website

--------- Tutorials ---