方法一:直接使用字符串转化为数字的方法
function StrToInt(str)
{
if(str == '-2147483649' || str == '2147483648') return 0;
return Number(str) ? parseInt(str) : 0;
//当str为不合法数值时,Number(str)的值为NaN,Boolean(NaN)==false
}
方法二:不使用任何的内部函数,直接判断字符串每一位是否符合题意
补充知识点:
由于十个数字对应的ASCII码值是连续的,所以只要记住第一个值,后面的就知道了。我们只需要记住数字0对应的ASCII码为48(十进制)就可以了,其余数字的ASCII码累加上去就行了。
x的ASCII码 = 48 + x,想知道某个数字的ASCII码,直接用48加上这个数字值就可以了
比如:
1的ASCII码 = 48 + 1 = 49
2的ASCII码 = 48 + 2 = 50
3的ASCII码 = 48 + 3 = 51
…
9的ASCII码 = 48 + 9 = 57
function StrToInt(str)
{
// write code here
if (str.length == 0 || str == '-2147483649' || str == '2147483648') return 0;
for (var i = 0; i < str.length; i++) {
var offSet = (str.charAt(i).charCodeAt() > 48 && str.charAt(i).charCodeAt() <= 57);
if (i == 0 && str.length != 1) {
if (!(str.charAt(i) === '+' || str.charAt(i) === '-' || offSet)) return 0;
} else {
if (!offSet) return 0;
}
}
return +str;
}