java是否有一个int.tryparse不会抛出坏数据的exception?

可能重复:
Java:封装Integer.parseInt()的好方法
如何将string转换为浮动,并避免在java中使用try / catch?

C#有Int.TryParse: Int32.TryParse方法(string,Int32%)

这种方法的好处是它不会抛出坏数据的exception。

在java中, Integer.parseInt("abc")会抛出一个exception,在这种情况下,很多性能会受到影响。

对于性能问题的情况,有没有办法解决这个问题?

我能想到的唯一方法就是针对正则expression式运行input,但是我必须testing以查看更快的结果。

不,你必须像这样做自己的:

 boolean tryParseInt(String value) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { return false; } } 

…你可以像这样使用它:

 if (tryParseInt(input)) { Integer.parseInt(input); // We now know that it's safe to parse } 

Apache Commons有一个IntegerValidator类,它可以做你想做的事情。 Java没有为此提供内置的方法。

编辑 – 只是看到您的评论关于与一个可能坏的input数据相关的性能问题。 我不知道如何try / catch parseInt比较正则expression式。 我猜,基于很less的硬性知识,与Java中的try / catch相比,正则expression式并不是非常高效的。

无论如何,我只是这样做:

 public Integer tryParse(Object obj) { Integer retVal; try { retVal = Integer.parseInt((String) obj); } catch (NumberFormatException nfe) { retVal = 0; // or null if that is your preference } return retVal; }