[英]Convert a String into an Integer starting with 0
我必须将Strings的前2个字符转换为int。 问题是,当字符串以09开头时,将其转换为1,并且年份看起来像2001,而不是2009。
这就是我所拥有的,也许有更好的方法...
String s = longString.substring(0, 2); // 09asdasdas
int jahr = Integer.parseInt(s);
...看起来像是2001年而不是2009年...
不确定我能收到您的问题,但这可能取决于您的打印方式。 以下代码在必要时显示前导0:
String longString = "09asdasdas";
String s = longString.substring(0, 2);
int jahr = Integer.parseInt(s);
System.out.printf("Year 20%02d.", jahr); // prints "2009"
与此代码段进行比较
String longString = "59asdasdas"; // <-- Changed to "59....."
String s = longString.substring(0, 2);
int jahr = Integer.parseInt(s);
System.out.printf("Year 20%02d.", jahr); // prints "2059"
(这是一个ideone演示 。)
不需要摆脱前导0,但是如果您愿意,这是一种实现方法...
这是摆脱前导0(如果有的话)的方法,它适用于从“ 00”到“ 99”的任何数字(您的问题和substring(0,2)似乎暗示着):
Integer.parseInt(s.substring(0, 2).replaceAll("^[0]", ""));
您正在使用前导零进行十进制操作。 坏习惯,因为它可以解释为八进制数。 您还提到了几年。 如果您要操纵日期,请不要使用整数。 使用像Joda time这样的库。 我认为您需要类似的东西:
String string = "09asdasdas";
String dateString = string.substring(0, 2);
DateTimeFormatter formatter = DateTimeFormat.forPattern("YY");
DateTime date = formatter.parseDateTime(dateString);
System.out.println(date);
最好的选择是检查第一个字符,如果为0,则将其裁剪,然后发送给Integrer.parseInt()-如果我没记错的话,Integer.parseInt不喜欢许多因素(前导0,包括其中的多个因素)我将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.