我通常使用以下习惯用法来检查字符串是否可以转换为整数。
public boolean isInteger( String input ) {
try {
Integer.parseInt( input );
return true;
}
catch( Exception e ) {
return false;
}
}
是不是只有我,或者这看起来有点老土?有什么更好的方法吗?
请参阅我的答案(使用基准测试,基于CodingWithSpike的earlier answer ),以了解为什么我改变了立场,接受了Jonas Klemming's answer来解决这个问题。我认为这个原始代码将被大多数人使用,因为它的实现更快,更容易维护,但当提供非整数数据时,它的速度要慢几个数量级。
发布于 2008-10-25 23:32:46
如果您不关心潜在的溢出问题,此函数的执行速度将比使用Integer.parseInt()
快20-30倍。
public static boolean isInteger(String str) {
if (str == null) {
return false;
}
int length = str.length();
if (length == 0) {
return false;
}
int i = 0;
if (str.charAt(0) == '-') {
if (length == 1) {
return false;
}
i = 1;
}
for (; i < length; i++) {
char c = str.charAt(i);
if (c < '0' || c > '9') {
return false;
}
}
return true;
}
发布于 2008-10-25 23:03:35
你有它,但是你应该只抓到NumberFormatException
。
发布于 2008-10-27 10:03:38
org.apache.commons.lang.StringUtils.isNumeric
尽管Java的标准库确实缺少这样的实用函数
我认为Apache Commons是每个Java程序员的“必备”
太糟糕了,它还没有移植到Java5
https://stackoverflow.com/questions/237159
复制相似问题