为什么我得到一个 Integer.parseInt(String) 一个数字格式异常?

Why do i get for an Integer.parseInt(String) an numberformatexception?

我觉得解决方案非常简单,但我现在盯着它看了 10 分钟,但在我的代码中找不到任何错误。说真的。

eventDateStart 是一个整数。整数通常需要 8 个字符来进行字符串到 int 的转换,我不明白为什么 Java 不能转换它我就像......呃??

代码正在生成 NumberFormatException:

String rruleMonthday = "-1";

//where ar rrule is sth like --> RRULE:FREQ=MONTHLY;BYMONTHDAY=29
int firstMonthday = (rrule.indexOf("BYMONTHDAY=") + 11);

try {
rruleMonthday = rrule.substring(firstMonthday, rrule.indexOf(";", firstMonthday));
} catch (Exception ex) {
 rruleMonthday = rrule.substring(firstMonthday, rrule.indexOf("\n", firstMonthday));
}

eventDateStart = eventDateStart.substring(0, 6) + rruleMonthday;

System.out.println("eventDateStart: ." + eventDateStart + ".");


System.out.println("2: " + Integer.parseInt(eventDateStart)); //this Integer.parseInt conversion is printing numberformatexception 


输出:

eventDateStart: .20200329.

java.lang.NumberFormatException: For input string: "20200329"

根据 ASCII table 序列 50,48,50,48,48,51,50,5720200329 值。在你的情况下,它后面跟着一个回车 return 符号 13.

很可能您使用的是 Windows,其中行结束序列是 \r\n。而不是 \n 使用 System.lineSeparator() 使您的代码平台独立:

} catch (Exception ex) {
    rruleMonthday = rrule.substring(firstMonthday, 
            rrule.indexOf(System.lineSeparator(), firstMonthday));
}