例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
思路:对每个字符进行判断,其中设置一个小数点的标志p和指数e的个数标志eflag和位置标志epos,分别用来表示字符串中e出现的个数和位置,其中位置是用来判断e后面是否带有‘+’ ‘-’符号的;
bool isNumeric(char* string)
{
if(string==NULL)
return false;
int i = 0;
bool flag = false;
int p = 0;
int eflag = 0;
int epos;
while(string[i]!= '\0')
{
if(string[i]=='+' || string[i] =='-')
{
if(i == 0 || i==(epos + 1))
{
i++;
flag = true;
continue;
}
}
if(string[i]=='.')
{
if(eflag)
{
flag = false;
break;
}
p++;
if(p>1)
{
flag = false;
break;
}
i++;
flag = true;
}
else if(string[i]=='E' || string[i]=='e')
{
epos = i;
if(string[i+1]=='\0')
{
flag = false;
break;
}
eflag += 1;
if(eflag>1)
{
flag = false;
break;
}
i++;
flag = true;
if(string[i+1]=='+' || string[i+1] =='-')
{
continue;
}
}
else if( int(string[i]) <= 57 && int(string[i]>=48))
{
i++;
flag = true;
}
else
{
flag = false;
break;
}
}
return flag;
}