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)
asked Mar 31, 2011 at 19:03

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
answered Mar 31, 2011 at 19:08
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
answered Mar 31, 2011 at 19:05

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
answered Mar 31, 2011 at 19:06

1 Comment

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

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.

answered Mar 31, 2011 at 19:41

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.