身份证辅助模块,审核以及数据提取
2008-09-24 19:19
204 查看
package net.java2000.tools;
import java.util.*;
/**
* <p>Title: 身份证辅助模块</p>
* <p>Description: 负责身份证号码的审核以及数据提取</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: java2000.net</p>
* @author 赵学庆
* @version 1.0
*/
public class Certificate {
public static final int[] IW = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
public static final char[] szVerCode = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
/**
* 校验身份证号码的合法性
* @param str String
* @return boolean
*/
public static boolean valid(String str) {
// 字符串不能是null
if (str == null) {
return false;
}
// 去掉前后空格等无用字符
str = str.trim();
// 身份证只允许15位或18位
if (str.length() != 15 && str.length() != 18) {
return false;
}
// 暂时不判断15位的情况
if (str.length() == 15) {
return true;
} else {
// 判断18位号码的校验位
return str.charAt(17) == getVerifyCode(str);
}
}
/**
* 根据字符串的前17位计算校验位
* @param str String 字符串,至少17位长度
* @return char 校验位(第18位)
*/
public static char getVerifyCode(String str) {
if (str != null && str.length() >= 17) {
int IS = 0;
for (int i = 0; i < 17; i++) {
IS += (str.charAt(i) - '0') * IW[i];
}
return szVerCode[IS % 11];
} else {
return '-';
}
}
/**
* 读取身份证号码的生日信息
* @param str String 身份证号码
* @return Date 返回日期,如果不合法则返回null
*/
public static Date getBirthday(String str) {
if (valid(str)) {
String birthday = str.length()==15?("19"+str.substring(6,12)):(str.substring(6,14));
return DateTools.parse(birthday,"yyyyMMdd");
} else {
return null;
}
}
/**
* 返回身份证号码的性别信息
* @param str String 身份证号码
* @return int 返回1=男性,0=女性;-1=不合法
*/
public static int getGender(String str) {
if(valid(str)){
return (str.length()==15?str.charAt(14):str.charAt(16))%2==1?1:0;
}else{
return -1;
}
}
}
import java.util.*;
/**
* <p>Title: 身份证辅助模块</p>
* <p>Description: 负责身份证号码的审核以及数据提取</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: java2000.net</p>
* @author 赵学庆
* @version 1.0
*/
public class Certificate {
public static final int[] IW = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
public static final char[] szVerCode = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
/**
* 校验身份证号码的合法性
* @param str String
* @return boolean
*/
public static boolean valid(String str) {
// 字符串不能是null
if (str == null) {
return false;
}
// 去掉前后空格等无用字符
str = str.trim();
// 身份证只允许15位或18位
if (str.length() != 15 && str.length() != 18) {
return false;
}
// 暂时不判断15位的情况
if (str.length() == 15) {
return true;
} else {
// 判断18位号码的校验位
return str.charAt(17) == getVerifyCode(str);
}
}
/**
* 根据字符串的前17位计算校验位
* @param str String 字符串,至少17位长度
* @return char 校验位(第18位)
*/
public static char getVerifyCode(String str) {
if (str != null && str.length() >= 17) {
int IS = 0;
for (int i = 0; i < 17; i++) {
IS += (str.charAt(i) - '0') * IW[i];
}
return szVerCode[IS % 11];
} else {
return '-';
}
}
/**
* 读取身份证号码的生日信息
* @param str String 身份证号码
* @return Date 返回日期,如果不合法则返回null
*/
public static Date getBirthday(String str) {
if (valid(str)) {
String birthday = str.length()==15?("19"+str.substring(6,12)):(str.substring(6,14));
return DateTools.parse(birthday,"yyyyMMdd");
} else {
return null;
}
}
/**
* 返回身份证号码的性别信息
* @param str String 身份证号码
* @return int 返回1=男性,0=女性;-1=不合法
*/
public static int getGender(String str) {
if(valid(str)){
return (str.length()==15?str.charAt(14):str.charAt(16))%2==1?1:0;
}else{
return -1;
}
}
}
相关文章推荐
- Python3,通过re模块中的sub()和findall()2个方法提升爬虫提取数据的效率
- 微软企业库5.0学习笔记(三十五)数据访问模块 DataSet以及数据库事务
- php提取身份证号码中的生日日期以及验证是否为成年人的函数
- 微软企业库5.0学习笔记(三十五)数据访问模块 DataSet以及数据库事务
- PHP简单系统数据添加以及数据删除模块源文件下载
- twsited(4)--不同模块用redis共享以及用web发送数据到tcpserver
- 转载: 对GPS全球定位系统定位信息的接收以及对各定位参数数据的提取方法(VC++)
- python 将复杂数据类型(list、dict)存储到文件 以及 读入 pickle模块
- R语言-批量读取数据文件以及提取字符串中的数字
- Android MMS模块数据存取以及各个表的字段说明
- Python数据挖掘学习--01基本模块介绍以及环境安装
- 关于对发送HTTP请求以及解析服务器返回的数据操作的提取到一个公共类中进行封装
- PHP简单系统数据添加以及数据删除模块源文件下载
- 高矮脉冲数据提取分离,以及连续计数程序结构
- php提取身份证号码中的生日日期以及验证是否为未成年人的函数
- python--用linecache模块方便提取文本数据
- 如何快速地从mongo中提取数据到numpy以及pandas中去
- perl--DBI 模块中提取数据的fetch方法汇总(三)
- 对评论模块数据提取的一点心得
- 用Excel XP提取身份证中的日期数据