Android 将字符串转换为整数格式异常

Android covert string to integer numberformatexception

我的目标是从字符串中取出数字并将其转换为 int。 例如: 12.7(字符串)将变为 127(整数) 156-06(字符串)将变为 15606(整数)

这是我使用的代码:

private static int convertToDigits(String input){
    StringBuilder sb = new StringBuilder(input.length());
    for(int i = 0; i < input.length(); i++){
        char c = input.charAt(i);
        if(c > 47 && c < 58){
            sb.append(c);
        }
    }
    String result = sb.toString().trim();
    Log.d("Result", result);
    return Integer.parseInt(result);
}

当我记录结果时,我得到 127 作为我想要的字符串值,但是当我将其转换为 int 时,我得到 NumberFormatException:

java.lang.NumberFormatException: Invalid int: ""
        at java.lang.Integer.invalidInt(Integer.java:138)
        at java.lang.Integer.parseInt(Integer.java:358)
        at java.lang.Integer.parseInt(Integer.java:334)
        at com.dcasillasappdev.mytrackfieldteam.utility.Utility.convertToDigits(Utility.java:333)

我是不是漏掉了什么?提前致谢!

Am I missing something here?

是的,空输入的情况。 您的方法适用于非空字符串, 你只需要为空输入添加特殊处理, 例如:

if (input.isEmpty()) {
    return 0;  // or whatever way you want to handle this case ...
}

顺便说一句,这里有一个更简单的方法来去除所有非数字字符并转换为 int:

return Integer.parseInt(input.replaceAll("\D+", ""));

但如果您真的想坚持原来的方法来迭代字符并使用字符串生成器,那么这里有一个更好的写法:

private static int convertToDigits(String input) {
    if (input.isEmpty()) {
        return 0;
    }
    StringBuilder builder = new StringBuilder(input.length());
    for (char c : input.toCharArray()) {
        if('0' <= c && c <= '9') {
            builder.append(c);
        }
    }
    return Integer.parseInt(builder.toString());
}