如何在JavaScript中将字符串转换为整数?


当前回答

我使用这种方式将字符串转换为数字:

var str = "25";       // String
var number = str*1;   // Number

因此,当乘以1时,值不会改变,但JavaScript会自动返回一个数字。

但如下图所示,如果您确定str是一个数字(或可以表示为数字),则应使用此选项,否则它将返回NaN,而不是数字。

您可以创建简单的函数来使用。,

function toNumber(str) {
    return str*1;
}

其他回答

尝试parseInt。

var number = parseInt("10", 10); //number will have value of 10.

这(可能)不是解析整数的最佳解决方案,但如果您需要“提取”一个整数,例如:

"1a2b3c" === 123
"198some text2hello world!30" === 198230
// ...

这将起作用(仅适用于整数):

var str='3a9b0c3d2e9f8g'函数提取器整数(str){var结果=0;无功因数=1对于(var i=str.length;i>0;i-){if(!isNaN(str[i-1])){result+=parseInt(str[i-1])*因子系数*=10}}返回结果}console.log(extractInteger(str))

当然,这也适用于解析整数,但比其他方法慢。

您也可以使用此方法解析整数,如果字符串不是数字,则返回NaN,但我不明白为什么要这样做,因为这在内部依赖于parseInt,parseInt可能更快。

var str='3a9b0c3d2e9f8g'函数提取器整数(str){var结果=0;无功因数=1对于(var i=str.length;i>0;i-){if(isNaN(str[i-1]))返回NaNresult+=parseInt(str[i-1])*因子系数*=10}返回结果}console.log(extractInteger(str))

尝试parseInt函数:

var number = parseInt("10");

但有一个问题。如果您尝试使用parseInt函数转换“010”,它将检测为八进制数,并将返回数字8。因此,需要指定基数(从2到36)。在这种情况下,底座10。

parseInt(string, radix)

例子:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false

请注意,parseInt在解析任何有效数据后忽略错误数据。此guid将解析为51:

var result = parseInt('51e3daf6-b521-446a-9f5b-a1bb4d8bac36', 10) == 51; // Returns true

在我看来,没有答案涵盖所有边缘情况,因为解析浮点值会导致错误。

function parseInteger(value) {
    if(value === '') return NaN;
    const number = Number(value);
    return Number.isInteger(number) ? number : NaN;
}
parseInteger("4")            // 4
parseInteger("5aaa")         // NaN
parseInteger("4.33333")      // NaN
parseInteger("aaa");         // NaN

我使用这种方式将字符串转换为数字:

var str = "25";       // String
var number = str*1;   // Number

因此,当乘以1时,值不会改变,但JavaScript会自动返回一个数字。

但如下图所示,如果您确定str是一个数字(或可以表示为数字),则应使用此选项,否则它将返回NaN,而不是数字。

您可以创建简单的函数来使用。,

function toNumber(str) {
    return str*1;
}