CodeCollection2018
8/11/2019 - 3:08 AM

判断字符串是否是数字

特殊情况:第一个字符是+/-;小数点最多一个;e最多一个;e可以紧接着+/-;小数点或e后面必须有数字;字符不符合要求。

public boolean isNumeric(String s){
    if(s==null || s.length()==0) return false;
    s = s.trim();
    int cur = 0;
    if(s.charAt(0)=='-' || s.charAt(0)=='+') cur=1;
    int num_e = 0;
    int num_dot =0;
    boolean pre_e = true;
    boolean pre_dot = true;
    while(cur < s.length()){
        if(s.charAt(cur)=='.'){
            if(cur==s.length()-1) return false;
            if(!pre_dot) return false;
            pre_dot = false;
            cur++;
            continue;
        }
        if(s.charAt(cur)=='e'){
            if(cur==s.length()-1) return false;
            if(!pre_e) return false;
            pre_e = false;
            cur++;
            continue;
        }
        if((s.charAt(cur)=='-' || s.charAt(cur)=='+') && cur>1 && s.charAt(cur-1)=='e'){
            cur++;
            continue;
        }
        if(s.charAt(cur)>'9' || s.charAt(cur)<'0') return false;
        cur++;
    }
    return  true;
}