我这里有一个把15位身份证号码补成18位的函数如果要,可以发信给[email protected]

解决方案 »

  1.   

    《程序员》java增刊,有一篇将JUnit的文章,测试程序就是18位身份证号码校验的程序
      

  2.   

    /**
         * 修补15位个人身份证号码为18位
         * @param personIDCode
         * @return
         */
        public static String fixPersonIDCode(String personIDCode)
        {
          String retIDCode = "";
          if ( personIDCode == null || personIDCode.trim().length() != 15 ) {
            return personIDCode;
          }
          String id17 = personIDCode.substring(0,6) + "19" + personIDCode.substring(6,15);  //15位身份证补'19'      char[] code = {'1','0','X','9','8','7','6','5','4','3','2'};  //11个
          int[] factor={0, 2,4,8, 5,10,9,7, 3,6,1,2, 4,8,5,10, 9,7}; //18个;
          int[] idcd = new int[18];
          int     i;
          int     j;
          int     sum;
          int     remainder;      for (i=1; i<18; i++)
          {
            j = 17 - i ;
            idcd[i] = Integer.parseInt(id17.substring(j, j+1));
          }      sum = 0;
          for (i=1; i<18; i++)
          {
            sum = sum  + idcd[i] * factor[i];
          }
          remainder = sum%11;
          String lastCheckBit = String.valueOf(code[ remainder ]);
          return id17 + lastCheckBit;
        }