Most elegant way to detect if a String is a number?

前端 未结 11 829

Is there a better, more elegant (and/or possibly faster) way than

boolean isNumber = false;
try{
   Double.valueOf(myNumber);
   isNumber = true;
} catch (Nu         


        
11条回答
  •  我在风中等你
    2020-12-30 12:17

    Leveraging off Mr. Skeet:

    private boolean IsValidDoubleChar(char c)
    {
        return "0123456789.+-eE".indexOf(c) >= 0;
    }
    
    public boolean isDouble(String value)
    {
        for (int i=0; i < value.length(); i++)
        {
            char c = value.charAt(i);
            if (IsValidDoubleChar(c))
                continue;
            return false;
        }
        try
        {
            Double.parseDouble(value);
            return true;
        }
        catch (NumberFormatException e)
        {
            return false;
        }
    }
    

提交回复
热议问题