⑴ 如何提取身份证详细地址信息
1、根据身份证号码的组成规则,前两张身份证代表省籍,前六张代表完整的行政区,我们以省籍为例,在新工作单名册上的第一个。输入表格中的代码和区域列。
2、然后我们把姓名和身份证号码信息输入到软件中,并保留一份完整的国籍清单。然后输入公式=查找(左(b3,2),身份证源代码表!a1:b22,2,0)。
这个公式的意思是=vlukup(提取前两张ID卡,匹配原点代码表,返回第二列值,精确匹配)。写公式时,可以直接拉身份证代码表。
3、确认后,可以看到身份证的相应地,然后用填写国籍表,即可快速输入人员的原地资料。
4、输入公式回到车内,会显示#n/a,可能是因为输入的id数字是文字格式,而id数字码表是数字格式,公式无法匹配,无法返回数据,显示错误。
5、在这种情况下,可以在LEFT之前添加利用数学中的负向和正向原理将文本格式转换为数字格式,可以匹配代码表。就可以和代码表进行匹配了,回车确定后填充即可。
6、如果要提取详细的来源信息,可以在互联网上下载六位数字的区域代码列表,并将前两位数字改为前六位数字即可。
⑵ 15身份证号码转18位算法,用java 程序怎样实现即java程序源代码
import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.*;
import java.io.ByteArrayInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
public class COMUT {
public COMUT() {
}
/**
*
* 修补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个
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;
}
/**
*
* 判断是否是有效的18位或15位居民身份证号码
*
* @param identityId
* :18位或15位居民身份证号码
*
* @return:true: 有效的18位或15位居民身份证号码
*/
public static boolean isIdentityId(String identityId) {
if (isEmpty(identityId))
return false;
try {
if (identityId.length() == 18) {
String identityId15 = identityId.substring(0, 6)
+ identityId.substring(8, 17);
// System.out.println("the identityId15 is : "+identityId15);
if (fixPersonIDCode(identityId15).equalsIgnoreCase(identityId)) {
return true;
} else {
return false;
}
} else if (identityId.length() == 15) {
try {
Long.parseLong(identityId);
return true;
} catch (Exception ex) {
return false;
}
} else {
return false;
}
} catch (Exception ex) {
return false;
}
}
/**
*
* 判断是否为空串""
*/
public static boolean isEmpty(String sValue) {
if (sValue == null)
return true;
return sValue.trim().equals("") ? true : false;
}
public static void main(String[] args) {
try {
System.out.println(fixPersonIDCode("650103760113073"));// 身份证15位转18位
System.out.println(isIdentityId("650103760113073")); // 否是为有效的15位身份证号
} catch (Exception e) {
e.printStackTrace();
}
}
}
⑶ 身份证源码什么意思
身份证号码的前两位数字代表所在省份的代码,第三和第四位数字代表所在城市的代码,第五和第六位数字表示所在区县的代码。第七到第十四位数字代表出生的年、月、日,第十五和第十六位数字代表所在地派出所的代码。第十七位数字表示性别,奇数表示男性,偶数表示女性。第十八位数字是校验码,根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算方法得到。
具体的计算方法是将前17位身份证号码分别乘以不同的系数。从第一位到第十七位的系数分别为7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2。然后将这17位数字和系数相乘的结果相加。接着,用加出来的和除以11,看余数是多少。余数可能是0 1 2 3 4 5 6 7 8 9 10中的一个数字,每个数字对应一个特定的最后一位身份证号码。例如,余数为2时,身份证的第18位数字会是1;余数为10时,身份证的第18位数字会是2。
如果计算过程中出现罗马数字Ⅹ,它在身份证的第18位数字位置表示10。这种方法确保了身份证号码的准确性,减少了识别错误的可能性。