延续上一篇,此则文为java版本校验企业中征码.
校验规则在上一篇中已经提过.所以话不多说,直接上代码.
//校验中征码
public static boolean checkZZM(String value){
//先进行正则匹配
String reg = "^[A-Z0-9]{3}[0-9]{13}$";
if(!value.matches(reg)){
return false;
}
//取出校验位
String code = value.substring(14,16);
//前14位转化为char数组
char[] idCode = value.substring(0,14).toCharArray();
//加权因子
int[] weight_factor = new int[]{1,3,5,7,11,2,13,1,1,17,19,97,23,29};
int len = idCode.length;
int num = 0;
int temp = 0;
//循环取和
for(int i = 0; i<len; i++){
//字母转数字
if(idCode[i]>='A' && idCode[i]<='Z'){
temp = (int) idCode[i]-55;
}else {
temp = (int)idCode[i]-48;
}
//求和
num = num + temp *