给定一个字符串,在不使用系统方法的前提下,使用自己的方法将这个字符串变成整数int型。如str=‘123’;转化为123
需要考虑字符串是否为数字,首位的符号是正还是负,还有在转化时注意减去'0'
如上所示,计算时向左移位乘10,但是需要在最后减去'0',这是因为在计算机中,数字的ASCII值在'0'~'9'之间差了48,而恰好'0'的ASCII值就是48,如果不减这个'0'的话,会发生如下情况
第一次是res = 0*10+array[1];而array[1]是字符串'1',‘1’的ascii为49,此时就会导致res=49,之后就会全乱,如果此时减去'0',则不会发生这样的错误
public static int StringtoInt(string str)
{ if (str == null) return 0;
char[] array = str.ToCharArray();
int symbol = 1;
int flag = 0;
int res = 0;
if (array[0] == '-') {
symbol = -1;
flag++;
}else if(array[0] == '+')
{
flag++;
}
for (; flag < array.Length; flag++)
{
if (array[flag] < '0' || array[flag] > '9')
{
return 0;
}
res = res * 10 + array[flag]-'0';
}
return res*symbol;
}