mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
fix IdCardUtil
This commit is contained in:
parent
23884e7121
commit
0ee4108d26
@ -14,6 +14,7 @@
|
|||||||
* 【http 】 UserAgentUtil增加Android原生浏览器识别(pr#975@Github)
|
* 【http 】 UserAgentUtil增加Android原生浏览器识别(pr#975@Github)
|
||||||
* 【crypto 】 增加ECIES算法类(issue#979@Github)
|
* 【crypto 】 增加ECIES算法类(issue#979@Github)
|
||||||
* 【crypto 】 CollUtil增加padLeft和padRight方法(pr#141@Gitee)
|
* 【crypto 】 CollUtil增加padLeft和padRight方法(pr#141@Gitee)
|
||||||
|
* 【core 】 IdCardUtil香港身份证去除首字母校验(issue#I1OOTB@Gitee)
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
* 【core 】 修复ZipUtil中finish位于循环内的问题(issue#961@Github)
|
* 【core 】 修复ZipUtil中finish位于循环内的问题(issue#961@Github)
|
||||||
|
@ -46,10 +46,6 @@ public class IdcardUtil {
|
|||||||
* 台湾身份首字母对应数字
|
* 台湾身份首字母对应数字
|
||||||
*/
|
*/
|
||||||
private static final Map<String, Integer> TW_FIRST_CODE = new HashMap<>();
|
private static final Map<String, Integer> TW_FIRST_CODE = new HashMap<>();
|
||||||
/**
|
|
||||||
* 香港身份首字母对应数字
|
|
||||||
*/
|
|
||||||
private static final Map<String, Integer> HK_FIRST_CODE = new HashMap<>();
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
CITY_CODES.put("11", "北京");
|
CITY_CODES.put("11", "北京");
|
||||||
@ -114,18 +110,6 @@ public class IdcardUtil {
|
|||||||
TW_FIRST_CODE.put("Z", 33);
|
TW_FIRST_CODE.put("Z", 33);
|
||||||
TW_FIRST_CODE.put("I", 34);
|
TW_FIRST_CODE.put("I", 34);
|
||||||
TW_FIRST_CODE.put("O", 35);
|
TW_FIRST_CODE.put("O", 35);
|
||||||
|
|
||||||
//来自http://shenfenzheng.bajiu.cn/?rid=40
|
|
||||||
HK_FIRST_CODE.put("A", 1);// 持证人拥有香港居留权
|
|
||||||
HK_FIRST_CODE.put("B", 2);// 持证人所报称的出生日期或地点自首次登记以后,曾作出更改
|
|
||||||
HK_FIRST_CODE.put("C", 3);// 持证人登记领证时在香港的居留受到入境事务处处长的限制
|
|
||||||
HK_FIRST_CODE.put("N", 14);// 持证人所报的姓名自首次登记以后,曾作出更改
|
|
||||||
HK_FIRST_CODE.put("O", 15);// 持证人报称在香港、澳门及中国以外其他地区或国家出生
|
|
||||||
HK_FIRST_CODE.put("R", 18);// 持证人拥有香港入境权
|
|
||||||
HK_FIRST_CODE.put("U", 21);// 持证人登记领证时在香港的居留不受入境事务处处长的限制
|
|
||||||
HK_FIRST_CODE.put("W", 23);// 持证人报称在澳门地区出生
|
|
||||||
HK_FIRST_CODE.put("X", 24);// 持证人报称在中国大陆出生
|
|
||||||
HK_FIRST_CODE.put("Z", 26);// 持证人报称在香港出生
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -357,11 +341,10 @@ public class IdcardUtil {
|
|||||||
} else {
|
} else {
|
||||||
sum = 522 + (Character.toUpperCase(card.charAt(0)) - 55) * 8;
|
sum = 522 + (Character.toUpperCase(card.charAt(0)) - 55) * 8;
|
||||||
}
|
}
|
||||||
String start = idCard.substring(0, 1);
|
|
||||||
Integer iStart = HK_FIRST_CODE.get(start);
|
// 首字母A-Z,A表示1,以此类推
|
||||||
if (null == iStart) {
|
char start = idCard.charAt(0);
|
||||||
return false;
|
int iStart = start - 'A' + 1;
|
||||||
}
|
|
||||||
String mid = card.substring(1, 7);
|
String mid = card.substring(1, 7);
|
||||||
String end = card.substring(7, 8);
|
String end = card.substring(7, 8);
|
||||||
char[] chars = mid.toCharArray();
|
char[] chars = mid.toCharArray();
|
||||||
|
@ -87,4 +87,10 @@ public class IdcardUtilTest {
|
|||||||
Assert.assertFalse(isValidCard18);
|
Assert.assertFalse(isValidCard18);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isValidHKCardIdTest(){
|
||||||
|
String hkCard="P174468(6)";
|
||||||
|
boolean flag=IdcardUtil.isValidHKCard(hkCard);
|
||||||
|
Assert.assertTrue(flag);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user