验证给定的字符串是否为数字。
例如:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。
更新于 2015-02-10:
C++函数的形式已经更新了。如果你仍然看见你的函数接收 const char * 类型的参数,请点击重载按钮重置你的代码。
var isNumber = function (s) {
s = s.trim();
var numberSeen = false;
var pointSeen = false;
var eSeen = false;
var numberAfterE = true;
for (var i = 0, len = s.length; i < len; i++) {
if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) {
numberSeen = true;
numberAfterE = true;
} else if (s.charAt(i) == '.') {
if (eSeen || pointSeen)
return false;
pointSeen = true;
} else if (s.charAt(i) == 'e') {
if (eSeen || !numberSeen)
return false;
eSeen = true;
numberAfterE = false;
} else if (s.charAt(i) == '+' || s.charAt(i) == '-') {
if (i != 0 && s.charAt(i - 1) != 'e')
return false;
} else
return false;
}
return numberSeen && numberAfterE;
};