/**
* 校验台湾身份证格式
* @param idCard
* @return
*/
public static boolean TWIDCardValidate(String idCard){
if (StringUtils.isNotBlank(idCard) && idCard.length() == 10) {
idCard = idCard.toUpperCase();
// 第一位验证:第一位是用户所在的地区
Hashtable<String,Integer> twMap = GetTWAreaCode();
Integer tw = twMap.get(idCard.substring(0, 1));
if (tw == null) {
return false;
}
try {
// 第二位验证:第二位是性别《1:男,2:女》
int sex = Integer.parseInt(idCard.substring(1, 2));
if (sex != 1 && sex != 2) {
return false;
}
// 第三位~第九位:顺序码
// 十位数
int ten = tw / 10 % 10;
// 个位数
int one = tw % 10;
int totalNumber = ten; // 区域代码的十位数
totalNumber += one * 9; // 区域代码的个位数 * 9
totalNumber += sex * 8; // 性别 * 8
// 以下都是身份证的第3位 ~ 第9位
int number = 7;
for (int i = 2; i < 9; i++) {
if (number < 1) {
break;
}
totalNumber += Integer.parseInt(idCard.substring(i, i + 1)) * number;
number --;
}
String totalNumberStr = totalNumber+"";
// 第十位:用 10 减去计算和的各位数
int lastNumber = 10 - Integer.parseInt((totalNumberStr).substring(totalNumberStr.length() - 1));
lastNumber = lastNumber == 10 ? 0 : lastNumber;
if (lastNumber == Integer.parseInt(idCard.substring(9))) {
return true;
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
return false;
}
private static Hashtable<String, Integer> GetTWAreaCode() {
Hashtable<String, Integer> hashtable = new Hashtable<String, Integer>();
hashtable.put("A", 10);//台北市
hashtable.put("B", 11);//台中市
hashtable.put("C", 12);//基隆市
hashtable.put("D", 13);//台南市
hashtable.put("E", 14);//高雄市
hashtable.put("F", 15);//新北市
hashtable.put("G", 16);//宜兰县
hashtable.put("H", 17);//桃园市
hashtable.put("J", 18);//新竹县
hashtable.put("K", 19);//苗栗县
hashtable.put("L", 20);//台中县
hashtable.put("M", 21);//南投县
hashtable.put("N", 22);//彰化县
hashtable.put("P", 23);//云林县
hashtable.put("Q", 24);//嘉义县
hashtable.put("R", 25);//台南县
hashtable.put("S", 26);//高雄县
hashtable.put("T", 27);//屏东县
hashtable.put("U", 28);//花莲县
hashtable.put("V", 29);//台东县
hashtable.put("X", 30);//澎湖县
hashtable.put("Y", 31);//阳明山
hashtable.put("W", 32);//金门县
hashtable.put("Z", 33);//连江县
hashtable.put("I", 34);//嘉义市
hashtable.put("O", 35);//新竹市
return hashtable;
}
台湾身份证校验
最新推荐文章于 2024-06-24 09:50:22 发布