如何在javascript中解析字符串到int

时间:2010-11-16 12:27:46

标签: javascript

我想从javascript中的字符串中获取int我如何从

获取它们

test1,stsfdf233,fdfk323,

有人向我展示了从这个字符串中获取整数的方法。

规则是int总是在字符串的后面。

我怎么能得到最后在我的字符串中的int

9 个答案:

答案 0 :(得分:52)

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

第一步是简单的正则表达式 - \d+$将匹配结尾附近的数字 在下一步中,我们在之前匹配的字符串上使用parseInt,以获得正确的数字。

答案 1 :(得分:3)

您可以使用regex通过String#match提取字符串中的数字,并通过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

如果数字确实仅出现在字符串的末尾,或者您只想转换找到的第一个数字集,则可以简化一下: / p>

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

如果您想忽略不在最后的数字,请将$添加到正则表达式的末尾:

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

Live example

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

又一个替代方案,这次没有任何替换或正则表达式,只是一个简单的循环:

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;
}

用法示例:

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

答案 5 :(得分:0)

这可能对您有所帮助

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

答案 6 :(得分:0)

将我的扩展名用于String类:

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

然后:

"ddfdsf121iu".toInt();

将返回一个整数:121

答案 7 :(得分:0)

第一个正数或负数:

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

答案 8 :(得分:-2)

javascript:alert('stsfdf233'.match(/\d+$/)[0]) 
带有Global.parseInt的{​​p> radix在这里有点矫枉过正,正则表达式提取十进制数字已经和右边修剪过的字符串