java - 要检查是否将可解析的字符串传递给 Integer?

标签 java string integer

我想检查传递给 Integer.valueOf(String s)String 是一个要解析的有效字符串。如果一个不可解析,我需要返回 0。

我是按以下方式做的:

try{
    Integer.valueOf(String s)
} catch(NumberFormatException e) {
    return 0;
}

这样做不好吗?

最佳答案

方法一:使用正则表达式判断数字的合法性

public static int parseStrToInt(String str) {
        if (str.matches("\\d+")) {
            return Integer.parseInt(str);
        } else {
            return 0;
        }
    }

方法二:使用Java内置的java.text.NumberFormat对象,看字符串解析后解析器位置是否在字符串末尾。如果是,我们可以假设整个字符串都是数字

public static int strToInt(String str) {
    NumberFormat formatter = NumberFormat.getInstance();
    ParsePosition pos = new ParsePosition(0);
    formatter.parse(str, pos);

    if (str.length() == pos.getIndex()) {
        return Integer.parseInt(str);
    } else {
        return 0;
    }
}

关于java - 要检查是否将可解析的字符串传递给 Integer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26098604/

相关文章:

java - 如何解决这些 logcat 错误?

java - 剪辑有时无法播放

javascript - 如何处理字符串以保留字符到最后一位数字?

c - 使用 NULL 终止符和定界符拆分 char 数组的最佳方法?

java - 如何使用队列对整数流进行排序?实验室JAVA

java - 什么是 OSGI 版本限定符

java - 如何比较两个bigdecimal

Javascript函数

Javascript 字符串到 int 数组

python - ObjectListView 使用逗号对整数进行排序和格式化?