题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
代码
思路1:正则表达式
function isNumeric(s)
{
// write code here
return s.match(/[\+\-]?[0-9]*(\.[0-9]*)?([eE][\+-]?[0-9]+)?/g)[0]==s;
}
思路2:
function isNumeric(s)
{
// write code here
var i = 0;
if(s.charAt(i)=='+' || s.charAt(i)=='-' || isNum(s.charAt(i))){
while(s.charAt(++i)!='\0' && isNum(s.charAt(i)));
if(s.charAt(i)=='.'){
if(isNum(s.charAt(++i))){
while(s.charAt(++i)!='\0' && isNum(s.charAt(i)));
if(s.charAt(i)=='e'||s.charAt(i)=='E'){
i++;
if(s.charAt(i)=='+' || s.charAt(i)=='-' || isNum(s.charAt(i))){
while(s.charAt(++i)!='\0' && isNum(s.charAt[i]));
if(s.charAt[i]=='\0') return true;
else return false;
}else return false;
}else if(s.charAt(i)=='\0') return true;
else return false;
}else if(s.charAt(++i)=='\0') return true;
else return false;
}else if(s.charAt[i]=='e'||s.charAt[i]=='E'){
i++;
if(s.charAt(i)=='+' || s.charAt(i)=='-' || isNum(s.charAt(i))){
while(s.charAt(++i)!='\0' && isNum(s.charAt(i)));
if(s.charAt(i)=='\0') return true;
else return false;
}else return false;
}else if(s.charAt(i)=='\0') return true;
else return false;
}else return false;
}
function isNum(ch){
if(ch>='0'||ch<='9'){
return true
}else{
return false
}
}