将string 转int

/**
 * @param {string} str
 * @return {number}
 */
var myAtoi = function(str) {
    
        str = str.replace(/^(\s|\u00A0)+/,'').replace(/(\s|\u00A0)+$/,'');

        if( (str[0] !== '-' && str[0] !== '+') && isNaN(str[0])){
            return 0;
        }
        var num = [];
        var i =0;
        if(str[0] === '-' || str[0] === '+'){
            i =1;
        }
        for(; i < str.length ; i++){
            if(isNaN(str[i]) || str[i] === ' '){
                break;
            }
            num.push(str[i]);
        }
        var int_num = 0;
        var ten = 1;
        while(num.length > 0){
            var tmp = num.pop() * ten;
            int_num += tmp;
            ten *= 10;
        }
        if(str[0] === '-'){
            int_num = 0 - int_num;
        }
        if(int_num > 2147483647){
            return 2147483647;
        }
        if(int_num < -2147483648){
            return -2147483648;
        }

        return int_num;
};

主要看异常处理情况:

1.前后空格的处理

2.+,- 符号的处理

3.要求字符串后有数字以外的字符仍然能够正常工作,例如‘452fjse' 输出 452

4.超过int 型数值范围处理 最大值2147483647 和最小值 -2147483648 。

posted @ 2016-10-08 12:48  没离开过  阅读(240)  评论(0编辑  收藏  举报