Преобразовать строку в целое число, начиная с 0 - PullRequest
2 голосов
/ 01 ноября 2010

Я должен преобразовать из строк первые 2 символа в int. Проблема в том, что когда строка начинается с 09, она преобразуется в 1, а год выглядит как 2001, а не 2009.

это то, что у меня есть, может быть, есть лучшие методы ...

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

Ответы [ 4 ]

2 голосов
/ 01 ноября 2010

... и год выглядит как 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 .)

1 голос
/ 01 ноября 2010

Нет необходимости избавляться от ведущего 0, но если вы хотите, вот один из способов сделать это ...

Вот как избавиться от ведущего 0, если таковые имеются, и это будет работатьштраф за любое число от «00» до «99» (что, по-видимому, подразумевает ваш вопрос и подстрока (0,2)):

Integer.parseInt(s.substring(0, 2).replaceAll("^[0]", ""));
0 голосов
/ 01 ноября 2010

Вы используете ведущий ноль для десятичной манипуляции. Плохая практика, потому что это можно интерпретировать как восьмеричное число. Вы также упоминаете годы. Если вы пытаетесь манипулировать датами, не используйте целые числа. Используйте библиотеку, например Время Joda . Я полагаю, вам нужно что-то вроде:

String string = "09asdasdas";
String dateString = string.substring(0, 2);
DateTimeFormatter formatter = DateTimeFormat.forPattern("YY");
DateTime date = formatter.parseDateTime(dateString);  
System.out.println(date);
0 голосов
/ 01 ноября 2010

Лучше всего, вероятно, проверить первый символ, а если 0, обрезать его и затем отправить в Integrer.parseInt () - если я правильно помню, Integer.parseInt не нравится ряд факторов (ведущие 0,среди них) я бы просто убрал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...