把字符串转化为整数

题目

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库
函数。 数值为0或者字符串不是一个合法的数值则返回0。

思路

不能使用parseInt函数,要求自己实现,可以使用位运算

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function StrToInt(str) {
let res = 0,
flag = 1;
const n = str.length;
if (!n) return 0;
if (str[0] === '-') {
flag = -1;
}
for (let i = str[0] === '+' || str[0] === '-' ? 1 : 0; i < n; i++) {
if (!(str[i] >= '0' && str[i] <= '9')) return 0;
res = (res << 1) + (res << 3) + (str[i] - '0');
}
return res * flag;
}