簡體   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