我有很多代码收集用户输入并解析它, 我想解析整数值而不抛出异常。
我当前的tryParseInt()
函数代码很简单:
public static Integer tryParseInt( String text )
{
if(text == null)
return null;
try
{
return new Integer( text.trim() );
}
catch ( NumberFormatException e )
{
return null;
}
}
但是我得到了很多NumberFormatExceptions
,我很担心因为这可能会影响我的应用程序性能。
任何人都可以建议我解析用户输入的最佳实践。
谢谢
答案 0 :(得分:3)
你可以使用正则表达式,因为它更多是失败证明
public static Integer tryParseInt(String text) {
if (text != null && !text.isEmpty()) {
if (text.trim().matches("[0-9]+")) {
return Integer.valueOf(text.trim());
}
}
return null;
}
答案 1 :(得分:2)
这是一个非常helpful experiment,我的经验确实是删除异常对性能更好
答案 2 :(得分:1)
如果你获得了很多NumberFormatException
,你可以考虑在实际解析之前检查解析输入。
顺便说一下return new Integer( text.trim() );
效率不高,因为你要分配很多不必要的对象(在-128到127之间)。
public static Integer tryParseInt(String text) {
if(text == null)
return null;
try {
return Integer.valueOf(text.trim());
}
catch (NumberFormatException e) {
return null;
}
}