HY!
我想将String解析为Integer。 String类似于系列的格式:SXXEXXX
“守则”应该增加这一集。
赞:S01E01 - > S01E02 另外:S01E100 - > S01E101
代码:
String s = episodes.get(episodes.size()-1);
Log.e("DBManager",s);
if (s.split("E").length <= 2) {
int i = Integer.getInteger(s.split("E")[1].split(" ")[0]); //NullPointerEx
return s.split("E")[0]+"E"+String.valueOf(i++);
}
日志:
10-26 15:56:34.635: E/DBManager(932): S00E01
答案 0 :(得分:2)
Integer.getInteger()
不是正确的使用方法。
您应该使用Integer.valueOf()
Integer.getInteger(String s)
将返回带有键s的整数系统属性。
出现空指针,因为此方法无法使用您提供的密钥查找属性并返回null。然后,Java尝试将其解包为int和null指针。
答案 1 :(得分:1)
空指针异常正好发生,因为您在字符串中保留前导0。如果你真的需要把它留在那里,下面的代码对我有用:
int i = Integer.parseInt(s.split("E")[1].split(" ")[0]);
答案 2 :(得分:0)
如果我理解正确,您想要将剧集名称拆分为部分,然后获取剧集编号并将其增加1以获得下一集编号。不要多次调用这种拆分方法,只需调用一次。
String episodeName = episodes.get(episodes.size()-1);
Log.e("DBManager", episodeName);
string[] splittedName = episodeName.split("E");
string returnName = "";
if (splittedName.length == 2) {
if (splittedName[1].split(" ").length > 1) {
// do something if there's a episode name too
} else {
// gets the episode number
int i = Integer.valueOf(splittedName[1]);
// returns next episode full name
if (i < 9) {
returnName = splittedName[0] + "E0" + String.valueOf(i + 1);
} else {
returnName = splittedName[0] + "E" + String.valueOf(i + 1);
}
}
}
return returnName;