繁体   English   中英

将字符串转换为以0开头的整数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM