1

how do I convert a string to int in JS, while properly handling error cases?

I want NaN returned when the argument is not really an integer quanityt:

  • blank string should return NaN (not 0)
  • mixed strings (e.g. "3b") should return NaN (not 3)

5 Answers 5

1
function cNum(param) { return param === "" ? NaN : Number(param) } cNum(""); //returns NaN cNum("3b"); //returns NaN cNum("4.5"); //returns 4.5 
Sign up to request clarification or add additional context in comments.

1 Comment

you may also check null as it will be treated as 0.
0

http://www.w3schools.com/jsref/jsref_parseInt.asp

3 Comments

I think, based on other SO Q&A, that parseInt will return "3" when given "3b" and "0" when given "".
Don't link to w3schools please. It's widely regarded as a poor and inaccurate reference.
Really? I'll admit I don't do much web development, but I've never run across anything inaccurate there. Do you have an example?
0
function stringToInt(str) { var num = parseInt(str); if (num == str) return num; return NaN; } 

Examples

stringToInt("") NaN stringToInt("3") 3 stringToInt("3x") Nan 

1 Comment

Simple, easy... I like it! Nothing built in though, huh?
0
var intval = /^\d+$/.test( strval ) ? parseInt( strval ) : NaN; 

Comments

0

You don't need much- if s is a string:

s%1 will return 0 if s is an integer.

It will return a non-zero number if s is a non-integer number,

and NaN if s is not a number at all.

function isInt(s){ return (s%1===0)? Number(s):NaN; } 

But although the number returned is an integer, to javascript it is still just a number.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.