2.从身份证号中提取身份证信息(IDInfo java)。编程要求: (1)输入18位身份证号,输出性别、出生年月(格式为 xxx年xx月xx日)等信息。 (2)身份证号前四位代表所在城市,请判断所在城市。用java作答
时间: 2024-12-13 14:24:10 浏览: 9
省市地区及6位编码(附身份证号校验程序)
在Java中,为了从身份证号中提取信息,你可以使用正则表达式和一些基本的数学计算。以下是一个简单的示例,展示了如何提取性别、出生日期以及判断省份。注意这只是一个基础实现,实际生产环境可能需要更复杂的校验规则:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IDInfo {
public static void main(String[] args) {
String idNumber = "123456789012345678"; // 示例身份证号
if (isValidID(idNumber)) {
String sex = getSex(idNumber);
String birthDate = getBirthDate(idNumber);
String province = getProvince(idNumber);
System.out.println("性别: " + sex);
System.out.println("出生日期: " + birthDate);
System.out.println("所在省份: " + province);
} else {
System.out.println("无效的身份证号码");
}
}
private static boolean isValidID(String idNumber) {
return idNumber.matches("\\d{18}");
}
private static String getSex(String idNumber) {
int奇偶性 = (idNumber.charAt(16) - '0') % 2;
return oddEvenToGender(奇偶性);
}
private static String getBirthDate(String idNumber) {
int year = Integer.parseInt(idNumber.substring(6, 10));
int month = Integer.parseInt(idNumber.substring(10, 12));
int day = Integer.parseInt(idNumber.substring(12, 14));
return String.format("%02d%02d%02d", year, month, day);
}
private static String getProvince(String idNumber) {
String code = idNumber.substring(0, 4);
switch (code) {
case "11": return "北京";
case "12": return "天津";
// ... 添加其他省份对应的代码
default: return "未知";
}
}
private static String oddEvenToGender(int parity) {
return parity == 1 ? "男" : "女";
}
}
```
在这个例子中,`isValidID`函数用于检查身份证号长度,`getSex`根据第17位数字的奇偶性确定性别,`getBirthDate`和`getProvince`分别提取出生年月和省份信息。
阅读全文