将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 。