2011-09-27 2 views
1

Я пытаюсь получить 5-ю, 6-ю и 7-ю цифры из списка цифр.Как я могу получить несколько символов из строки?

E.g. Я хочу получить год из переменной dateofbirth и сохранить его как отдельную переменную с именем dob, как int.

Вот что у меня есть:

int dateofbirth = 17031989 
String s = Integer.toString(dateofbirth); 
int dob = s.charAt(5); 

Что бы я должен поставить в скобках после s.charAt получить несколько цифр подряд?

+1

Просто общее примечание: Сохранение даты рождения как целое число в форме, данной вами, просто неверно. Храните его как строку, объект «Дата», количество дней с какой-то начальной даты или что-то, что делает смысл. Но не используйте число, которое требует форматирования строк в определенном радиусе, чтобы иметь какой-то смысл. –

ответ

6

Нет необходимости преобразования строки:

int dateofbirth = 17031989; 
System.out.println(dateofbirth%10000); //1989 

Если вы действительно хотели сделать это в виде строки, то метод substring() будет вашим другом. Вам также понадобится использовать Integer.parseInt(), чтобы преобразовать строку обратно в целое число. Принимая значение символа как целого, вы получите значение ASCII этого символа, а не целое число, представляющее этот символ!

+2

приятное использование оператора мод. – mcfinnigan

+0

отлично спасибо миллион –

0

вы:

String s = String.valueOf(dateofbirth); 
int yourInt = Integer.parseInt(s.substring(startIndex,length)) 
0

Этот подход не будет работать по нескольким причинам:

  1. s.charAt (5) даст вам ASCII код символа 6 (который не 9).
  2. Там нет никакого способа, чтобы получить несколько символов

Если вы хотите извлечь 1989 из этой строки вы должны использовать подстроку, а затем преобразовать эту строку в Integer с помощью Integer.valueOf()

2

Вы хотите использовать String.substring (непроверенные):

int dateofbirth = 17031989; 
String s = Integer.toString(dateofbirth); 
String year = s.substring(4, 8); 
int yearInt = Integer.parseInt(year); 
1

s.substring(5) даст вам все, начиная с индекса 5. Вы также можете указать второй аргумент, указывающий, где вы хотите, чтобы подстрока заканчивалась.

-1

Из документации JRE: getChars

+0

Как насчет того, чтобы написать еще одно или два предложения по этому поводу? –

+0

Потому что, если я могу ответить на вопрос четырьмя словами, использование шести не является импровизационным.Все, что мог спросить плакат, он может найти в ссылке. – SJuan76

1

Если вы регулируете даты, вы могли бы использовать SimpleDateFormat и календарь, чтобы вытащить год:

SimpleDateFormat formatter = new SimpleDateFormat("ddMMyyyy"); 
Calendar cal = Calendar.getInstance(); 
cal.setTime(formatter.parse(Integer.toString(dateofbirth))); 
int year = cal.get(Calendar.YEAR); 
Смежные вопросы