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

Your Answer

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.