判断一个字符串是否表示数值,可以为整数、小数,可以带科学计数法形式。
一个数值的表示:[符号]若干个整数[.[若干个整数]][e|E[符号]若干个整数]
C++代码:
void scanDigit(char* &String) {// 扫描字符串,直到不是数字为止
while('\0' != *String && '0' <= *String && *String <= '9')
++String;
}
bool isExponential(char* &String) {// 如果是e或者E开始,科学计数法
if('e' != *String && 'E' != *String)
return false;
++String;
if('+' == *String || '-' == *String)
++String;
if('\0' == *String)
return false;
scanDigit(String);
if('\0' == *String)
return true;
else return false;
}
bool isNumeric(char* String) {// <span style="font-size:24px;">判断一个字符串是否表示数值</span>
if(NULL == String)
return false;
if('+' == *String || '-' == *String)
++String;
if('\0' == *String)
return false;
bool isNumber = true;
scanDigit(String);
if('\0' != *String) {
if('.' == *String) {// 是小数
++String;
scanDigit(String);
if('e' == *String || 'E' == *String) {
isNumber = isExponential(String);
}
} else if('e' == *String || 'E' == *String) { // 不是小数是科学计数法
isNumber = isExponential(String);
} else
isNumber = false;
}
return (isNumber && ('\0'==*String));
}