[Java] 纯文本查看 复制代码
package myexam.test24;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
*
* 问题:1. 模拟审核身份证的过程,按照以下要求实现相关代码(友情提示:不一定要用正则)(8分)
* a.提示用户在控制台输入身份证号,用一个字符串对其进行保存(2分)
* b.判断该身份证号位数是否是18位或者16位(2分)
* c.判断该身份证号除最后一位外,是否都是数字(2分)
* d.将“410124199008010231”身份证号中生日(19900801)获取出来并且打印到控制台上(2分)
*
*
*
*/
public class MyTest1 {
public static void main(String[] args) {
getId();
}
//写一个获取省份证好的方法
public static void getId(){
System.out.println("请输入省份证号码(15位or18位)");
//创建一个键盘录入对象
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String id=null;
while(true){
try {
id=bufr.readLine();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//用正则表达式判断身份证号(规则:16位或18位,末尾可以为子母)
Pattern idPattern=Pattern.compile("(\\d{15}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])");
//创建匹配器
Matcher idMacther=idPattern.matcher(id);
//判断是否匹配
if(idMacther.matches()){
System.out.println("您的出生年月日是:");
//将字符串转成字符数组
char[] ch=id.toCharArray();
for(int i=6;i<=13;i++){
System.out.print(ch);
}
}else{
System.out.println("您输入的不是身份证号,请继续输入:");
}
}
}
}