Java身份证号分析身份信息属相星座Word文档格式.docx
《Java身份证号分析身份信息属相星座Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java身份证号分析身份信息属相星座Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
37"
41"
42"
43"
44"
45"
46"
50"
51"
52"
53"
54"
61"
62"
63"
64"
65"
71"
81"
82"
91"
};
publicstaticfinalintpower[]={7,9,10,5,8,4,2,1,6,3,7,9,
10,5,8,4,2};
publicstaticfinalStringverifyCode[]={"
1"
0"
X"
9"
8"
7"
6"
5"
4"
3"
2"
publicstaticfinalintMIN=1930;
publicstaticMap<
String,String>
cityCodes=newHashMap<
();
String,Integer>
twFirstCode=newHashMap<
hkFirstCode=newHashMap<
static{
cityCodes.put("
北京"
);
天津"
河北"
山西"
内蒙古"
辽宁"
吉林"
黑龙江"
上海"
江苏"
浙江"
安徽"
福建"
江西"
山东"
河南"
湖北"
湖南"
广东"
广西"
海南"
重庆"
四川"
贵州"
云南"
西藏"
陕西"
甘肃"
青海"
宁夏"
新疆"
台湾"
香港"
澳门"
国外"
twFirstCode.put("
A"
10);
B"
11);
C"
12);
D"
13);
E"
14);
F"
15);
G"
16);
H"
17);
J"
18);
K"
19);
L"
20);
M"
21);
N"
22);
P"
23);
Q"
24);
R"
25);
S"
26);
T"
27);
U"
28);
V"
29);
30);
Y"
31);
W"
32);
Z"
33);
I"
34);
O"
35);
hkFirstCode.put("
1);
2);
3);
}
publicstaticStringconver15CardTo18(StringidCard){
StringidCard18="
"
;
if(idCard.length()!
=CHINA_ID_MIN_LENGTH){
returnnull;
if(isNum(idCard)){
Stringbirthday=idCard.substring(6,12);
DatebirthDate=null;
try{
birthDate=newSimpleDateFormat("
yyMMdd"
).parse(birthday);
}catch(ParseExceptione){
e.printStackTrace();
Calendarcal=Calendar.getInstance();
if(birthDate!
=null)
cal.setTime(birthDate);
StringsYear=String.valueOf(cal.get(Calendar.YEAR));
idCard18=idCard.substring(0,6)+sYear+idCard.substring(8);
char[]cArr=idCard18.toCharArray();
if(cArr!
=null){
int[]iCard=converCharToInt(cArr);
intiSum17=getPowerSum(iCard);
StringsVal=getCheckCode18(iSum17);
if(sVal.length()>
0){
idCard18+=sVal;
}else{
returnidCard18;
publicstaticbooleanvalidateCard(StringidCard){
Stringcard=idCard.trim();
if(validateIdCard18(card)){
returntrue;
if(validateIdCard15(card)){
String[]cardval=validateIdCard10(card);
if(cardval!
if(cardval[2].equals("
true"
)){
returnfalse;
publicstaticbooleanvalidateIdCard18(StringidCard){
booleanbTrue=false;
if(idCard.length()==CHINA_ID_MAX_LENGTH){
Stringcode17=idCard.substring(0,17);
Stringcode18=idCard.substring(17,CHINA_ID_MAX_LENGTH);
if(isNum(code17)){
char[]cArr=code17.toCharArray();
Stringval=getCheckCode18(iSum17);
if(val.length()>
if(val.equalsIgnoreCase(code18)){
bTrue=true;
returnbTrue;
publicstaticbooleanvalidateIdCard15(StringidCard){
StringproCode=idCard.substring(0,2);
if(cityCodes.get(proCode)==null){
StringbirthCode=idCard.substring(6,12);
yy"
).parse(birthCode
.substring(0,2));
if(!
valiDate(cal.get(Calendar.YEAR),
Integer.valueOf(birthCode.substring(2,4)),
Integer.valueOf(birthCode.substring(4,6)))){
publicstaticString[]validateIdCard10(StringidCard){
String[]info=newString[3];
Stringcard=idCard.replaceAll("
[\\(|\\)]"
if(card.length()!
=8&
&
card.length()!
=9&
idCard.length()!
=10){
if(idCard.matches("
^[a-zA-Z][0-9]{9}{1}"
)){//台湾
info[0]="
System.out.println("
11111"
Stringchar2=idCard.substring(1,2);
if(char2.equals("
info[1]="
MMMMMMM"
}elseif(char2.equals("
FFFFFFF"
info[2]="
false"
NNNN"
returninfo;
info[2]=validateTWCard(idCard)?
:
}elseif(idCard.matches("
^[1|5|7][0-9]{6}\\(?
[0-9A-Z]\\)?
{1}"
^[A-Z]{1,2}[0-9]{6}\\(?
[0-9A]\\)?
)){
info[2]=validateHKCard(idCard)?
publicstaticbooleanvalidateTWCard(StringidCard){
Stringstart=idCard.substring(0,1);
Stringmid=idCard.substring(1,9);
Stringend=idCard.substring(9,10);
IntegeriStart=twFirstCode.get(start);
Integersum=iStart/10+(iStart%10)*9;
char[]chars=mid.toCharArray();
Integeriflag=8;
for(charc:
chars){
sum=sum+Integer.valueOf(c+"
)*iflag;
iflag--;
return(sum%10==0?
0:
(10-sum%10))==Integer.valueOf(end)?
true
false;
publicstaticbooleanvalidateHKCard(StringidCard){
Integersum=0;
if(card.length()==9){
sum=(Integer.valueOf(card.substring(0,1).toUpperCase()
.toCharArray()[0])-55)
*9
+(Integer.valueOf(card.substring(1,2).toUpperCase()
.toCharArray()[0])-55)*8;
card=card.substring(1,9);
sum=522+(Integer.valueOf(card.substring(0,1).toUpperCase()
Stringmid=card.substring(1,7);
Stringend=card.substring(7,8);
Integeriflag=7;
if(end.toUpperCase().equals("
sum=sum+10;
sum=sum+Integer.valueOf(end);
return(sum%11==0)?
true:
publicstaticint[]converCharToInt(char[]ca){
intlen=ca.length;
int[]iArr=newint[len];
for(inti=0;
i<
len;
i++){
iArr[i]=Integer.parseInt(String.valueOf(ca[i]));
}catch(NumberFormatExceptione){
returniArr;
publicstaticintgetPowerSum(int[]iArr){
intiSum=0;
if(power.length==iArr.length){
iArr.length;
for(intj=0;
j<
power.length;
j++){
if(i==j){
iSum=iSum+iArr[i]*power[j];
returniSum;
publicstaticStringgetCheckCode18(intiSum){
StringsCode="
switch(iSum%11){
case10:
sCode="
break;
case9:
case8:
case7:
case6:
case5:
case4:
case3:
case2:
x"
case1:
case0:
returnsCode;
publicstaticintgetAgeByIdCard(StringidCard){
intiAge=0;
if(idCard.length()==CHINA_ID_MIN_LENGTH){
idCard=conver15CardTo18(idCard);
Stringyear=idCard.substring(6,10);
intiCurrYear=cal.get(Calendar.YEAR);
iAge=iCurrYear-I