首页 > 试题广场 >

正确的使用 parseInt

[编程题]正确的使用 parseInt
  • 热度指数:59113 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
修改 js 代码中 parseInt 的调用方式,使之通过全部测试用例
示例1
输入:'12'
输出:12
示例2
输入:'12px'
输出:12
示例3
输入:'0x12'
输出:0

示例1

输入

'12'

输出

12
示例2

输入

'12px'

输出

12
示例3

输入

'0x12'

输出

0
推荐
parseInt(string, radix) 当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
举例,如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
function parse2Int(num)
{
    return parseInt(num,10);
}
//解释来自于W3school


编辑于 2015-12-02 17:10:49 回复(8)
 function parse2Int(num) {
    var regex=/^\d+/;
    num=regex.exec(num)[0];
    return parseInt(num);
}
我的理解是:对于无效的数字,直接忽略。因此用正则表达式将首次匹配到的数字组合进行整数转换。
发表于 2016-08-13 19:08:36 回复(3)
function parse2Int(num) {
    var newNum;
    if(num[0]=='0' && num[1]=='x'){
        newNum = 0;
    }
    else{
        newNum = parseInt(num);
    }
    return newNum;
}

测试通过!

发表于 2017-04-10 14:38:29 回复(3)
function parse2Int(num) {
    function parseInt(item) {
        return +String(item).match(/\d+/);
    }
    return parseInt(num);
}
发表于 2016-12-02 22:28:19 回复(1)
function parse2Int(num){
    return num[0] === '0' && num[1] === 'x' ? 0 : parseInt(num)
}
发表于 2021-01-09 09:12:10 回复(0)
直接正则表达式
function parse2Int(num) {
    num=num.match(/\d+/)[0];
    return parseInt(num);
}


发表于 2020-08-16 19:56:16 回复(0)
function parse2Int(num) {
    return parseInt(num,10);
}
发表于 2020-03-24 17:13:33 回复(0)
function parse2Int(num) {
    return parseInt(num.replace('x','!'));
}
发表于 2018-03-14 02:15:05 回复(0)
function parse2Int(num) {
   
    
     var result="0";
    for(var i=0;i<num.length;i++){
        var a = num.charAt(i);
        if(parseInt(a)){
            result+=a;
        }else{
            break;
        }
    }
    return parseInt(result);
}
发表于 2017-10-12 16:49:04 回复(0)
function parse2Int(num) {
    var arr=num.split('');
    var b=[];
    for(var i=0;i<arr.length;i++){
        if(!isNaN(arr[i])){
            b.push(arr[i]);
        }
        else{
            break;
        }
    }
    return b.join('');
}
发表于 2017-09-12 14:58:38 回复(0)
function parse2Int(num) {
    var newArr = num.split(''), i = 0;
    for(; i < newArr.length; i++){
        if(isNaN(newArr[i])){
            break;
        }
    }
    return newArr.slice(0, i).join('') || 0;
}

发表于 2017-03-14 23:30:33 回复(0)
function parse2Int(num) {
    return parseInt(num,10);
}

发表于 2017-02-17 20:41:42 回复(0)
    function parse2Int(num) {
            var nArr = [];
            (""+num).split('').every(function (x) {
                return x >= '0' && x <= '9 ' && nArr.push(x);
            })
            return parseInt(nArr.join(''));
        }

编辑于 2016-11-11 17:12:42 回复(0)
function parse2Int(num) {
    for(var i = 0, len = num.length; i < len; i++)
        if(num[i] < '0' || num[i] > '9'){
            num = num.slice(0,i);
            break;
        }
    return parseInt(num);
}
//也可以用字符码来判断 if(num.charCodeAt(i) < 48 || num.charCodeAt(i) > 57) num = num.slice(0, i);

编辑于 2016-09-22 12:24:49 回复(0)
function parse2Int(num) {
    return parseInt(num,10);
}
10进制 遇到不是 数字 直接 无视
发表于 2015-08-28 17:06:05 回复(0)
function parse2Int(num) {
    return parseInt('0'+num);
}
我也不知道这是怎么回事,有知道的麻烦和我说一声
发表于 2016-07-30 18:10:41 回复(4)

按10进制去处理字符串,碰到非数字字符,会将后面的全部无视

function parse2Int(num) {
     return parseInt(num,10);
 }

编辑于 2015-08-19 10:33:02 回复(7)
function parse2Int(num) {
   
    return parseInt(parseFloat(num));
}
发表于 2015-07-06 17:43:24 回复(4)
function parse2Int(num) {
    return parseFloat(num);
}
parseFloat()只解析十进制
发表于 2017-09-25 16:51:13 回复(0)
懒得翻评论区但肯定也有人想用正则处理的吧?
function parse2Int(num) {
    return parseInt(num.match(/^(\d+)/)[0]);
}

发表于 2017-09-12 16:18:18 回复(1)

function parse2Int(num) {
    return parseInt('0'+num);
}

发表于 2018-07-04 11:30:17 回复(0)