如何从字符串中获取多个字符?

时间:2011-09-27 13:04:08

标签: java string char

我正在尝试从数字列表中获取第5,第6和第7位数字。

E.g。我希望将年份从变量dateofbirth中删除,并将其另存为名为dob的单独变量,作为int

这就是我所拥有的:

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

我需要在s.charAt后的括号中放一个连续几位的数字?

9 个答案:

答案 0 :(得分:6)

无需字符串转换:

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

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

答案 1 :(得分:2)

您想使用String.substring(未经测试):

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

答案 2 :(得分:1)

s.substring(5)将为您提供从索引5开始的所有内容。您还可以给出第二个参数来指示您希望子字符串结束的位置。

答案 3 :(得分:1)

如果您正在处理日期,可以使用SimpleDateFormat和Calendar来提取年份:

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

答案 4 :(得分:0)

你这样做:

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

答案 5 :(得分:0)

答案 6 :(得分:0)

这种方法不会有多种原因:

  1. s.charAt(5)将为您提供第6个字符的ASCII码(不是9)。
  2. 没有方法可以获得多个字符
  3. 如果要从此字符串中提取1989,则应使用substring,然后使用Integer.valueOf()

    将此字符串转换为Integer。

答案 7 :(得分:0)

Integer.parseInt(s.subString(4))

答案 8 :(得分:-1)

来自JRE文档:getChars