正在从字符串中提取数字

Extracting number from a string

本文关键字:提取 数字 字符串      更新时间:2023-09-26

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

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

n1
n2
n3
n10
n100
n1000
n99999
n9999999999999

等等。

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

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

如果它总是以单个"n"开头,请保持简单:

var number = parseInt(value.replace('n', ''));
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

这可能对你有帮助,也可能对你没有帮助。

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

var number = +str.substr(1);

我建议:

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

JS Fiddle演示。

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

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

参考:

  • Mozilla开发者中心的substring()