200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java 验证18位身份证号是否合法

java 验证18位身份证号是否合法

时间:2024-07-04 03:56:52

相关推荐

java 验证18位身份证号是否合法

把身份证号当做一个参数,然后再判断。

/*** 验证18位身份编码是否合法* * @param idCard* 身份编码* @return 是否合法*//** 中国公民身份证号码最大长度。 */public static boolean validateIdCard18(String idCard) {boolean bTrue = false;if (idCard.length() == 18) {// 前17位String code17 = idCard.substring(0, 17);// 第18位String code18 = idCard.substring(17, 18);if (isNum(code17)) {char[] cArr = code17.toCharArray();if (cArr != null) {int[] iCard = converCharToInt(cArr);int iSum17 = getPowerSum(iCard);// 获取校验位String val = getCheckCode18(iSum17);if (val.length() > 0) {if (val.equalsIgnoreCase(code18)) {bTrue = true;}}}}}return bTrue;}/*** 数字验证* * @param val* @return 提取的数字。*/public static boolean isNum(String val) {return val == null || "".equals(val) ? false : val.matches("^[0-9]*{1}");}

/*** 将字符数组转换成数字数组* * @param ca* 字符数组* @return 数字数组*/public static int[] converCharToInt(char[] ca) {int len = ca.length;int[] iArr = new int[len];try {for (int i = 0; i < len; i++) {iArr[i] = Integer.parseInt(String.valueOf(ca[i]));}} catch (NumberFormatException e) {e.printStackTrace();}return iArr;}

/*** 将身份证的每位和对应位的加权因子相乘之后,再得到和值* * @param iArr* @return 身份证编码。*/public static int getPowerSum(int[] iArr) {int iSum = 0;if (power.length == iArr.length) {for (int i = 0; i < iArr.length; i++) {for (int j = 0; j < power.length; j++) {if (i == j) {iSum = iSum + iArr[i] * power[j];}}}}return iSum;}/** 每位加权因子 */public static final int power[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };

/*** 将power和值与11取模获得余数进行校验码判断* * @param iSum* @return 校验位*/public static String getCheckCode18(int iSum) {String sCode = "";switch (iSum % 11) {case 10:sCode = "2";break;case 9:sCode = "3";break;case 8:sCode = "4";break;case 7:sCode = "5";break;case 6:sCode = "6";break;case 5:sCode = "7";break;case 4:sCode = "8";break;case 3:sCode = "9";break;case 2:sCode = "x";break;case 1:sCode = "0";break;case 0:sCode = "1";break;}return sCode;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。