C # verify the ID card number,
18-digit number:
1 private static bool CheckIDCard18 (string Id) 2 {3 long n = 0; 4 if (long. tryParse (Id. remove (17), out n) = false | n <Math. pow (10, 16) | long. tryParse (Id. replace ('x', '0 '). replace ('x', '0'), out n) = false) 5 {6 return false; 7} 8 string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91 "; 9 if (address. indexOf (Id. remove (2 )) =-1) 10 {11 return false; 12} 13 string birth = Id. substring (6, 8 ). insert (6 ,"-"). insert (4, "-"); 14 DateTime time = new DateTime (); 15 if (DateTime. tryParse (birth, out time) = false) 16 {17 return false; 18} 19 string [] arrVarifyCode = (", x, 9, 8, 7, 6, 5, 4, 3, 2 "). split (','); 20 string [] Wi = (", 2 "). split (','); 21 char [] Ai = Id. remove (17 ). toCharArray (); 22 int sum = 0; 23 For (int I = 0; I <17; I ++) 24 {25 sum + = int. parse (Wi [I]) * int. parse (Ai [I]. toString (); 26} 27 int y =-1; 28 Math. divRem (sum, 11, out y); 29 if (arrVarifyCode [y]! = Id. Substring (17, 1). ToLower () 30 {31 return false; 32} 33 return true; // correct 34}
15-digit number:
Private static bool CheckIDCard15 (string Id) {long n = 0; if (long. tryParse (Id, out n) = false | n <Math. pow (10, 14) {return false ;} string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91 "; if (address. indexOf (Id. remove (2) =-1) {return false;} string birth = Id. substring (6, 6 ). insert (4 ,"-"). insert (2, "-"); DateTime time = new DateTime (); if (DateTime. tryParse (birth, out time) = false) {return false;} return true; // correct}