将字母数字字符串转换为数字 - NumberFormatException

时间:2012-03-14 08:29:13

标签: java string exception parseint numberformatexception

我必须从字符串" a23"获得第23位。当运行以下程序时,会看到以下错误。

public class GetIntFromString {

    public static void main(String[] args) {

        String str = "a23";

        int i = Integer.parseInt(str);

        System.out.println("Integer value= "+i);

        System.out.println("value= "+str);

    }
}

这是堆栈跟踪

Exception in thread "main" java.lang.NumberFormatException: For Input String: "a23"

at java.lang.NumberFormatException.forInputString<NumberFormatException.java.48>
at java.lang.Integer.ParseInt<Integer.java.449>
at java.lang.Integer.ParseInt<Integer.java.499>
at GetIntFromString.main<GetIntFromString.java.9>

5 个答案:

答案 0 :(得分:4)

只需删除任何非数字字符;)

System.out.println("Integer value= "+str.replaceAll("[^0-9]","")); 

答案 1 :(得分:2)

parseXXX()方法不接受与请求的类型不相符的字符串 - 在这种情况下为整数。您将不得不想出一种手动定位实际数字部分的技术(或者可能使用正则表达式)。

答案 2 :(得分:2)

如果您的前缀字母始终只是一个字符,请尝试以下

int i = Integer.parseInt(str.substring(1));

否则,您需要一种方法来在调用parseInt

之前找出数字部分

答案 3 :(得分:1)

你应该在str上调用replaceAll来删除每个非数字字符。 Parseint只接受纯数字字符串。

答案 4 :(得分:0)

解析方法仅采用字符串格式的数字。否则会抛出NumberFormatException。