ImageVerifierCode 换一换
格式:DOCX , 页数:3 ,大小:16.06KB ,
资源ID:25432803      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25432803.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java验证身份证号码及编码规则和提取相应信息.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java验证身份证号码及编码规则和提取相应信息.docx

1、java验证身份证号码及编码规则和提取相应信息java验证身份证号码及编码规则和提取相应信息 /* * 将15位的身份证转成18位身份证 * * param idcard * return */ public String convertIdcarBy15bit(String idcard) String idcard17 = null; / 非15位身份证 if (idcard.length() != 15) return null; if (isDigital(idcard) / 获取出生年月日 String birthday = idcard.substring(6, 12); Date

2、 birthdate = null; try birthdate = new SimpleDateFormat(yyMMdd).parse(birthday); catch (ParseException e) e.printStackTrace(); Calendar cday = Calendar.getInstance(); cday.setTime(birthdate); String year = String.valueOf(cday.get(Calendar.YEAR); idcard17 = idcard.substring(0, 6) + year + idcard.subs

3、tring(8); char c = idcard17.toCharArray(); String checkCode = ; if (null != c) int bit = new intidcard17.length(); / 将字符数组转为整型数组 bit = converCharToInt(c); int sum17 = 0; sum17 = getPowerSum(bit); / 获取和值与11取模得到余数进行校验码 checkCode = getCheckCodeBySum(sum17); / 获取不到校验位 if (null = checkCode) return null;

4、/ 将前17位与第18位校验码拼接 idcard17 += checkCode; else / 身份证包含数字 return null; return idcard17; /* * 15位和18位身份证号码的基本数字和位数验校 * * param idcard * return */ public boolean isIdcard(String idcard) return idcard = null | .equals(idcard) ? false : Pattern.matches( (d15$)|(d17(?:d|x|X)$), idcard); /* * 15位身份证号码的基本数字和

5、位数验校 * * param idcard * return */ public boolean is15Idcard(String idcard) return idcard = null | .equals(idcard) ? false : Pattern.matches( 1-9d7(0d)|(10-2)(0|1|2d)|30-1)d3$, idcard); /* * 18位身份证号码的基本数字和位数验校 * * param idcard * return */ public boolean is18Idcard(String idcard) return Pattern .match

6、es( 1-9d51-9d3(0d)|(10-2)(0|1|2d)|30-1)d3(d|x|X1)$, idcard); /* * 数字验证 * * param str * return */ public boolean isDigital(String str) return str = null | .equals(str) ? false : str.matches(0-9*$); /* * 将身份证的每位和对应位的加权因子相乘之后,再得到和值 * * param bit * return */ public int getPowerSum(int bit) int sum = 0;

7、if (power.length != bit.length) return sum; for (int i = 0; i < bit.length; i+) for (int j = 0; j < power.length; j+) if (i = j) sum = sum + biti * powerj; return sum; /* * 将和值与11取模得到余数进行校验码判断 * * param checkCode * param sum17 * return 校验位 */ public String getCheckCodeBySum(int sum17) String c

8、heckCode = null; switch (sum17 % 11) case 10: checkCode = 2; break; case 9: checkCode = 3; break; case 8: checkCode = 4; break; case 7: checkCode = 5; break; case 6: checkCode = 6; break; case 5: checkCode = 7; break; case 4: checkCode = 8; break; case 3: checkCode = 9; break; case 2: checkCode = x;

9、 break; case 1: checkCode = 0; break; case 0: checkCode = 1; break; return checkCode; /* * 将字符数组转为整型数组 * * param c * return * throws NumberFormatException */ public int converCharToInt(char c) throws NumberFormatException int a = new intc.length; int k = 0; for (char temp : c) ak+ = Integer.parseInt

10、(String.valueOf(temp); return a; public static void main(String args) throws Exception String idcard15 = ; String idcard18 = ; IdcardValidator iv = new IdcardValidator(); boolean flag = false; flag = iv.isValidate18Idcard(idcard18); System.out.println(flag); flag = iv.isValidate15Idcard(idcard15); S

11、ystem.out.println(flag); System.out.println(iv.convertIdcarBy15bit(idcard15); flag = iv.isValidate18Idcard(iv.convertIdcarBy15bit(idcard15); System.out.println(flag); System.out.println(iv.isValidatedAllIdcard(idcard18); 提取身份证相关信息:IdcardInfoExtractor.java Java代码 import java.text.SimpleDateFormat; im

12、port java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * <p> * 类说明:提取身份证相关信息 * </p> */ public class IdcardInfoExtractor / 省份 private String province; / 城市 private String city; / 区县 priva

13、te String region; / 年份 private int year; / 月份 private int month; / 日期 private int day; / 性别 private String gender; / 出生日期 private Date birthday; private Map<String, String> cityCodeMap = new HashMap<String, String>() this.put(11, 北京); this.put(12, 天津); this.put(13, 河北); this.put(14, 山西);

14、 this.put(15, 内蒙古); this.put(21, 辽宁); this.put(22, 吉林); this.put(23, 黑龙江); this.put(31, 上海); this.put(32, 江苏); this.put(33, 浙江); this.put(34, 安徽); this.put(35, 福建); this.put(36, 江西); this.put(37, 山东); this.put(41, 河南); this.put(42, 湖北); this.put(43, 湖南); this.put(44, 广东); this.put(45, 广西); this.put(

15、46, 海南); this.put(50, 重庆); this.put(51, 四川); this.put(52, 贵州); this.put(53, 云南); this.put(54, 西藏); this.put(61, 陕西); this.put(62, 甘肃); this.put(63, 青海); this.put(64, 宁夏); this.put(65, 新疆); this.put(71, 台湾); this.put(81, 香港); this.put(82, 澳门); this.put(91, 国外); ; private IdcardValidator validator = n

16、ull; /* * 通过构造方法初始化各个成员属性 */ public IdcardInfoExtractor(String idcard) try validator = new IdcardValidator(); if (validator.isValidatedAllIdcard(idcard) if (idcard.length() = 15) idcard = validator.convertIdcarBy15bit(idcard); / 获取省份 String provinceId = idcard.substring(0, 2); Set<String> key

17、= this.cityCodeMap.keySet(); for (String id : key) if (id.equals(provinceId) this.province = this.cityCodeMap.get(id); break; / 获取性别 String id17 = idcard.substring(16, 17); if (Integer.parseInt(id17) % 2 != 0) this.gender = 男; else this.gender = 女; / 获取出生日期 String birthday = idcard.substring(6, 14);

18、 Date birthdate = new SimpleDateFormat(yyyyMMdd) .parse(birthday); this.birthday = birthdate; GregorianCalendar currentDay = new GregorianCalendar(); currentDay.setTime(birthdate); this.year = currentDay.get(Calendar.YEAR); this.month = currentDay.get(Calendar.MONTH) + 1; this.day = currentDay.get(C

19、alendar.DAY_OF_MONTH); catch (Exception e) e.printStackTrace(); /* * return the province */ public String getProvince() return province; /* * return the city */ public String getCity() return city; /* * return the region */ public String getRegion() return region; /* * return the year */ public int

20、getYear() return year; /* * return the month */ public int getMonth() return month; /* * return the day */ public int getDay() return day; /* * return the gender */ public String getGender() return gender; /* * return the birthday */ public Date getBirthday() return birthday; Override public String toString() return 省份: + this.province + ,性别: + this.gender + ,出生日期: + this.birthday; public static void main(String args) String idcard = ; IdcardInfoExtractor ie = new IdcardInfoExtractor(idcard); System.out.println(ie.toString();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1