将String转换为以0开头的整数

时间:2010-11-01 13:15:21

标签: java string

我必须将Strings的前2个字符转换为int。 问题是当一个字符串从09开始,它被转换为1,而年份看起来像2001而不是2009。

这就是我所拥有的,也许有更好的方法......

String s = longString.substring(0, 2); // 09asdasdas
int jahr = Integer.parseInt(s);

4 个答案:

答案 0 :(得分:2)

  

......这一年看起来像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 demo。)

答案 1 :(得分:1)

没有必要摆脱领先的0,但如果你愿意,这是一种方法来做到这一点......

以下是如何摆脱前导0(如果有的话),对于从“00”到“99”(你的问题和子串(0,2)似乎意味着)的任何数字都可以正常工作:

Integer.parseInt(s.substring(0, 2).replaceAll("^[0]", ""));

答案 2 :(得分: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);

答案 3 :(得分:-2)

你最好的选择可能是检查第一个字符,如果是0,修剪它然后发送到Integrer.parseInt() - 如果我没记错的话,Integer.parseInt不喜欢许多因素(领先0,正在其中)我只是删除它。