2011-09-27 54 views
1

我试图从数字列表中获得第5,第6和第7位数字。如何从字符串中获取多个字符?

例如我想从变量dateofbirth中获取年份,并将其另存为名为dob的单独变量,作为int

以下是我有:

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

我将不得不把括号s.charAt后能得到连续几个数字?

+1

只是一般的注意事项:储存出生日期作为你给出的形式的整数是错误的。将它存储为一个字符串,一个Date对象,从某个开始日期开始的几天,或者任何可以使用的东西。但是不要使用某个数字,它需要以特定的基数进行字符串格式化才能产生任何意义。 –

回答

6

无需字符串转换:

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

如果你确实想做到这一点作为一个字符串,那么substring()方法是你的朋友。您还需要使用Integer.parseInt()将字符串转换回整数。将字符值作为整数将给出该字符的ASCII值,而不是表示该字符的整数!

+2

很好用的mod运算符。 – mcfinnigan

+0

完美的感谢一百万 –

0

你这样做:

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

这种做法不会有几个原因的工作:

  1. s.charAt(5)会给你的第6个字符的ASCII码(这是不是9)。
  2. 没有方法来获得几个字符

如果你想从这个字符串,你应该使用字符串,然后用这个字符串转换成整数Integer.valueOf()

2

你要提取1989使用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

0
Integer.parseInt(s.subString(4)) 
1

如果你正在处理日期,你可以使用的SimpleDateFormat和日历年度拔出:

SimpleDateFormat formatter = new SimpleDateFormat("ddMMyyyy"); 
Calendar cal = Calendar.getInstance(); 
cal.setTime(formatter.parse(Integer.toString(dateofbirth))); 
int year = cal.get(Calendar.YEAR); 
相关问题