Strict Number Parsing

一般由字符串转换为数字会用到如下的代码
public static Number parse(String source)
{
    if (source == null)
    {
        return null;
    }
        
    NumberFormat format = NumberFormat.getInstance();
    try
    {
        return format.parse(source);
    }
    catch (ParseException e)
    {
        return null;
    }
}


传入参数为"100.123",返回为数字100.123;
传入参数为"100.123a",返回结果仍然为100.123,假如有些情况需要严格验证输入数据必须为数字则需要用到下面的代码了:

public static Number parse(String source)
{
    if (source == null)
    {
        return null;
    }
    
    NumberFormat format = NumberFormat.getInstance();
    try
    {
        ParsePosition pos = new ParsePosition(0);
        Number number = format.parse(source, pos);
        boolean flag = pos.getIndex() == source.length() && pos.getErrorIndex() == -1;
        
        return flag ? number : null;
    }
    catch (Exception e)
    {
        return null;
    }
}

此时如果传入参数包含有非数字字符则返回null。

你可能感兴趣的:(java)