从字符串中提取数字

时间:2011-06-18 18:20:37

标签: javascript jquery

从字符串中获取数字的最佳方法是什么。

该字符串将始终以n开头,并以任何数字结尾,即:。

n1
n2
n3
n10
n100
n1000
n99999
n9999999999999

等等。

5 个答案:

答案 0 :(得分:2)

如果它始终以单个'n'开头,那就保持简单:

var number = parseInt(value.replace('n', ''));

答案 1 :(得分:2)

如果你能保证字符串总是这样,那么

num = parseInt(str.substring(1));

答案 2 :(得分:1)

Number.of = function (number) {
    if (typeof number === "number")
        return number;

    var number = number + '',
        regnum = /(-)?[0-9]+\.?[0-9]*/.exec(number);

    return regnum ? (new Function('return ' + regnum[0]))() : 0;
};

然后运行..

Number.of('n12345'); // 12345
对我来说,采取一种令人难以置信的谨慎态度,但是什么会从任何事物中剔除。

Number.of('Hel5lo'); // 5

并且总是返回一个数字。

Number.of('There is no number here.'); // 0

虽然这可能对您有所帮助,也可能没有帮助。

答案 3 :(得分:0)

您可以使用String.prototype.substr[docs](或substring)和一元+将字符串转换为数字:

var number = +str.substr(1);

答案 4 :(得分:0)

我建议:

$('dt').each(
    function(){
        var n = $(this).text().substring(1);
        $('<dd />').text(n).insertAfter($(this));
    });

JS Fiddle demo

显然,您选择使用哪些元素(我为输入和输出之间的隐含关系选择了dtdd)并不重要。重要的部分是substring()功能; 1的值是指结果子字符串的起始点(来自第二个字符,因为JavaScript使用从零开始的数组)。

如果传递了第二个数字,则格式substring(1,4)生成的子字符串将从第二个字符开始,以第五个字符结束,除非 {{1}的字符串工作的长度比第二个参数短,在这种情况下,它被视为等于字符串的长度。

参考: