首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中检查字符串是否表示整数的最佳方法是什么?

在Java中检查字符串是否表示整数的最佳方法是什么?
EN

Stack Overflow用户
提问于 2008-10-25 22:58:49
回答 32查看 224.1K关注 0票数 243

我通常使用以下习惯用法来检查字符串是否可以转换为整数。

代码语言:javascript
复制
public boolean isInteger( String input ) {
    try {
        Integer.parseInt( input );
        return true;
    }
    catch( Exception e ) {
        return false;
    }
}

是不是只有我,或者这看起来有点老土?有什么更好的方法吗?

请参阅我的答案(使用基准测试,基于CodingWithSpikeearlier answer ),以了解为什么我改变了立场,接受了Jonas Klemming's answer来解决这个问题。我认为这个原始代码将被大多数人使用,因为它的实现更快,更容易维护,但当提供非整数数据时,它的速度要慢几个数量级。

EN

回答 32

Stack Overflow用户

回答已采纳

发布于 2008-10-25 23:32:46

如果您不关心潜在的溢出问题,此函数的执行速度将比使用Integer.parseInt()快20-30倍。

代码语言:javascript
复制
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;
}
票数 184
EN

Stack Overflow用户

发布于 2008-10-25 23:03:35

你有它,但是你应该只抓到NumberFormatException

票数 67
EN

Stack Overflow用户

发布于 2008-10-27 10:03:38

代码语言:javascript
复制
org.apache.commons.lang.StringUtils.isNumeric 

尽管Java的标准库确实缺少这样的实用函数

我认为Apache Commons是每个Java程序员的“必备”

太糟糕了,它还没有移植到Java5

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/237159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档