java算法——通过⾝份证号获取出⽣的年⽉⽇
思路:⾝份证号是由15为的数字或者17位数字+⼀位数字/x/X组成的,正则表达式的写法就是匹配⼀个字符串是不是由15位数字组成或者是17位数字+⼀位数字/x/X组成的
正则表达式的写法:^(\d{15}|\d17[\dxX])$
输出的格式:yyyy-MM-dd
声明三个字符串变量分别⽤来存储yyyy、MM、dd,⾝份证的第7位到第14位是出⽣的年⽉⽇,但在字符串中的下标是从0开始的,所以就需要从下标为6的地⽅开始取,
年:【6,10)
⽉:【10,12)
⽇:【12,14)
最后返回⾃⼰想要的格式
/**
* 省份证的正则表达式^(\d{15}|\d{17}[\dx])$
* @param id    省份证号
* @return⽣⽇(yyyy-MM-dd)
*/
public String extractYearMonthDayOfIdCard(String id) {
String year = null;
每个月14号String month = null;
String day = null;
//正则匹配⾝份证号是否是正确的,15位或者17位数字+数字/x/X
if (id.matches("^\\d{15}|\\d{17}[\\dxX]$")) {
year = id.substring(6, 10);
month = id.substring(10,12);
day = id.substring(12,14);
}else {
System.out.println("⾝份证号码不匹配!");
return null;
}
return year + "-" + month + "-" + day;
}