Navin Rauniyar
Navin Rauniyar

Reputation: 10525

how to get numeric value from string?

This will alert 23.

alert(parseInt('23 asdf'));

But this will not alert 23 but alerts NaN

alert(parseInt('asdf 23'));

How can I get number from like 'asd98'?

Upvotes: 9

Views: 33305

Answers (5)

Emil A.
Emil A.

Reputation: 3445

function toNumeric(string) {
    return parseInt(string.replace(/\D/g, ""), 10);
}

Upvotes: 3

Denys Séguret
Denys Séguret

Reputation: 382092

You can use a regex to get the first integer :

var num = parseInt(str.match(/\d+/),10)

If you want to parse any number (not just a positive integer, for example "asd -98.43") use

var num = str.match(/-?\d+\.?\d*/)

Now suppose you have more than one integer in your string :

var str = "a24b30c90";

Then you can get an array with

var numbers = str.match(/\d+/g).map(Number);

Result : [24, 30, 90]

For the fun and for Shadow Wizard, here's a solution without regular expression for strings containing only one integer (it could be extended for multiple integers) :

var num = [].reduce.call(str,function(r,v){ return v==+v?+v+r*10:r },0);

Upvotes: 21

Skyline0705
Skyline0705

Reputation: 11

var num = +('asd98'.replace(/[a-zA-Z ]/g, ""));

Upvotes: 0

LondonAppDev
LondonAppDev

Reputation: 9633

You have to use regular expression to extract the number.

var mixedTextAndNumber= 'some56number';
var justTheNumber = parseInt(mixedTextAndNumber.match(/\d+/g));

Upvotes: 1

at.
at.

Reputation: 52500

parseInt('asd98'.match(/\d+/))

Upvotes: 3

Related Questions