开发者

how to parse string to int in javascript

开发者 https://www.devze.com 2023-01-25 21:37 出处:网络
i wantint from string in javascript how i can get them from test1 , stsfdf233,fdfk323, are anyone show me the method to get 开发者_StackOverflow社区the integer from this string.

i want int from string in javascript how i can get them from

test1 , stsfdf233, fdfk323,

are anyone show me the method to get 开发者_StackOverflow社区the integer from this string.

it is a rule that int is always in the back of the string.

how i can get the int who was at last in my string


var s = 'abc123';
var number = s.match(/\d+$/);
number = parseInt(number, 10);

The first step is a simple regular expression - \d+$ will match the digits near the end.
On the next step, we use parseInt on the string we've matched before, to get a proper number.


You can use a regex to extract the numbers in the string via String#match, and convert each of them to a number via parseInt:

var str, matches, index, num;

str = "test123and456";
matches = str.match(/\d+/g);
for (index = 0; index < matches.length; ++index) {
    num = parseInt(matches[index], 10);
    display("Digit series #" + index + " converts to " + num);
}

Live Example

If the numbers really occur only at the ends of the strings or you just want to convert the first set of digits you find, you can simplify a bit:

var str, matches, num;

str = "test123";
matches = str.match(/\d+/);
if (matches) {
    num = parseInt(matches[0], 10);
    display("Found match, converts to: " + num);
}
else {
    display("No digits found");
}

Live example

If you want to ignore digits that aren't at the end, add $ to the end of the regex:

matches = str.match(/\d+$/);

Live example


var str = "stsfdf233";
var num = parseInt(str.replace(/\D/g, ''), 10);


var match = "stsfdf233".match(/\d+$/);
var result = 0; // default value
if(match != null) {
    result = parseInt(match[0], 10); 
}


Yet another alternative, this time without any replace or Regular Expression, just one simple loop:

function ExtractInteger(sValue)
{
    var sDigits = "";
    for (var i = sValue.length - 1; i >= 0; i--)
    {
        var c = sValue.charAt(i);
        if (c < "0" || c > "9")
            break;
        sDigits = c + sDigits;
    }
    return (sDigits.length > 0) ? parseInt(sDigits, 10) : NaN;
}

Usage example:

var s = "stsfdf233";
var n = ExtractInteger(s);
alert(n);


This might help you

var str = 'abc123';
var number = str.match(/\d/g).join("");


Use my extension to String class :

String.prototype.toInt=function(){
    return parseInt(this.replace(/\D/g, ''),10);
}

Then :

"ddfdsf121iu".toInt();

Will return an integer : 121


First positive or negative number:

"foo-22bar11".match(/-?\d+/); // -22


javascript:alert('stsfdf233'.match(/\d+$/)[0]) 

Global.parseInt with radix is overkill here, regexp extracted decimal digits already and rigth trimmed string

0

精彩评论

暂无评论...
验证码 换一张
取 消