具有parseInt,parseLong,parseDouble等的Java库接受默认值而不抛出异常?

Ste*_*ler 3 java parsing

我喜欢java中的String to Int中的建议- 可能是错误的数据,需要避免异常来实现解析int的实用程序方法,但如果无法解析字符串则返回默认值.

public static int parseInt(String s, int defaultValue) {
    if (s == null) return defaultValue;
    try {
         return Integer.parseInt(s);
     } catch (NumberFormatException x) {
         return defaultValue;
     }  
}
Run Code Online (Sandbox Code Playgroud)

是否存在一个现有的开源库(例如来自apache commons,或google),它实现了这个以及其他数据类型,如boolean,float,double,long等?

Pau*_*gas 13

Apache Commons Lang有一个org.apache.commons.lang3.math.NumberUtils方便的转换方法.换句话说,如果出现错误,您可以指定默认值.例如

NumberUtils.toLong("")         => 0L
NumberUtils.toLong(null, 1L)   => 1L

NumberUtils.toByte(null)       => 0
NumberUtils.toByte("1", 0)     => 1
Run Code Online (Sandbox Code Playgroud)


Zim*_*oot 8

Guava有几种tryParse方法在失败的解析上返回null,例如Ints.tryParse,Floats.tryParse