Venky
Venky

Reputation: 2047

How can i differentiate between a number and a special character?

value = "+"
isNaN(value)

Condition is false

value > 0

condition is true

value ="200"
isNaN(value)

Condition is false

value > 0

condition is true

Here's the thing, in both the cases value > 0 shows true, i want to differentiate things like +-/* with numbers 0,200,5 etc.

is it possible to do this in Javascript??

Upvotes: 1

Views: 244

Answers (1)

abc123
abc123

Reputation: 18753

Seems to be working as you are wanting/expecting.

value = "+";
// is true as "+" isn't a number
console.log(isNaN(value));
// is false because "+" isn't greater than 0
console.log(value > 0);

value = "200";
// is false, because value is a number
console.log(isNaN(value));
// is true because "200" is greater than 0
console.log(value > 0);


However, you could implement a isNumeric function

function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

value = "+";
// is false because "+" isn't numeric
console.log(isNumeric(value));
// is false because "+" isn't greater than 0
console.log(value > 0);

value = "200";
// is true, because value is numeric
console.log(isNumeric(value));
// is true, because "200" is greater than 0
console.log(value > 0);


Or you can use typeof

value = "+";
// is false as "+" is a string
console.log(typeof(value) === "number");
// is false because "+" isn't greater than 0
console.log(value > 0);

value = "200";
// is false, because value is a string not a number
console.log(typeof(value) === "number");
// is true because "200" is greater than 0, this auto converts to 200
console.log(value > 0);


Regex with numbers and symbols

function symbolCompare(value) {
  var results = /(\+|\-)(\d+)/.exec(value);
  if(results) {
    return results[2];
  }
  
  return false;
}

value = "+200";
// is false because 200 is a number
console.log(isNaN(symbolCompare(value)));
// is true because 200 > 0
console.log(symbolCompare(value) > 0);

value = "-200";
// is false because 200 is a number
console.log(isNaN(symbolCompare(value)));
// is true because 200 > 0
console.log(symbolCompare(value) > 0);

Upvotes: 2

Related Questions