营业执照注册编码 15与18位的java实现
来源:互联网 发布:前锦网络怎么样 编辑:程序博客网 时间:2024/04/27 12:46
public class LicenseNumberRegexUtil {private static final Log logger = LogFactory.getLog(LicenseNumberRegexUtil.class);/** * 营业执照注册号校验正确返回码 */private static String error_Businesslicense_Empty = "请输入营业执照注册号";public static String error_Businesslicense = "您输入的营业执照注册号有误,请核对后再输!";public static String error_Businesslicense_No = "您输入的营业执照注册号不足15位,请核对后再输!";public static String test = "110108000000016";// 营业执照号public static void main(String[] args) {isLicense_18(test);}/** * 校验 营业执照注册号 * * @param businesslicense * @return */public static boolean isLicense_15(String businesslicense) {if ("".equals(businesslicense) || " ".equals(businesslicense)) {logger.error(error_Businesslicense_Empty);return false;} else if (businesslicense.length() != 15) {logger.error(error_Businesslicense_No);return false;}String businesslicensePrex14 = businesslicense.substring(0, 14);// 获取营业执照注册号前14位数字用来计算校验码String businesslicense15 = businesslicense.substring(14, businesslicense.length());// 获取营业执照号的校验码char[] chars = businesslicensePrex14.toCharArray();int[] ints = new int[chars.length];for (int i = 0; i < chars.length; i++) {ints[i] = Integer.parseInt(String.valueOf(chars[i]));}getCheckCode(ints);if (!businesslicense15.equals(getCheckCode(ints) + "")) {// 比较填写的营业执照注册号的校验码和计算的校验码是否一致return false;}logger.info(error_Businesslicense);return true;}/** * 获取 营业执照注册号的校验码 * * @param ints * @return */private static int getCheckCode(int[] ints) {if (null != ints && ints.length > 1) {int ti = 0;int si = 0;// pi|11+tiint cj = 0;// (si||10==0?10:si||10)*2int pj = 10;// pj=cj|11==0?10:cj|11for (int i = 0; i < ints.length; i++) {ti = ints[i];pj = (cj % 11) == 0 ? 10 : (cj % 11);si = pj + ti;cj = (0 == si % 10 ? 10 : si % 10) * 2;if (i == ints.length - 1) {pj = (cj % 11) == 0 ? 10 : (cj % 11);return pj == 1 ? 1 : 11 - pj;}}}return -1;}public static boolean isLicense_18(String code){if (code.length() != 18) {logger.error(" 社会信用代码长度错误!"+code);return false;}String regex = "^([159Y]{1})([1239]{1})([0-9ABCDEFGHJKLMNPQRTUWXY]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-90-9ABCDEFGHJKLMNPQRTUWXY])$";if (!code.matches(regex)) {logger.error(" 社会信用代码校验错误! "+code);return false;}String str = "0123456789ABCDEFGHJKLMNPQRTUWXY";int[] ws = { 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28 };String[] codes = new String[2];codes[0] = code.substring(0, code.length() - 1);codes[1] = code.substring(code.length() - 1, code.length());int sum = 0;for (int i = 0; i < 17; i++) {sum += str.indexOf(codes[0].charAt(i)) * ws[i];}int c18 = 31 - (sum % 31);if (c18 == 31) {c18 = 'Y';} else if (c18 == 30) {c18 = '0';}if (str.charAt(c18) != codes[1].charAt(0)) {logger.error(" 社会信用代码有误! "+code);return false;}return true;}}
1 0
- 营业执照注册编码 15与18位的java实现
- 营业执照编码验证规则(15位和18位)
- 营业执照15位注册号码含义和查询规则
- 个体营业执照与公司营业执照的区别
- Java实现图片与base64位编码互相转换
- 实现营业执照注册号校验
- Base64编码与解码的java实现
- Base64编码的原理与Java实现
- 哈弗曼编码与反编码的实现 java源代码
- 在北京注册科技类公司的经历(四):交工商表、拿营业执照
- java 与数据库连接 实现用户的注册和登录
- java 与数据库连接 实现用户的注册和登录
- java编码笔记——身份证15升级18位
- java实现身份证15位转18位
- java代码实现15位身份证号码升级到18位
- java代码实现15位身份证号码升级到18位
- java实现utf-8与GB2312编码的转换
- java实现QRCODE二维码的编码与解码实例
- 实习每日总结_20161212
- HMM
- 这可能是最精简的Android6.0运行时权限处理,70行代码的工具类。附:各种权限详细处理
- Android安全加密:对称加密
- Sublime Text 3 插件的汉化、开发、发布方法教程
- 营业执照注册编码 15与18位的java实现
- c++ 创建二维数组的几种方法
- mongdb使用指南2
- openssl源码安装后,编译nginx-1.9.7或者openresty找不到OpenSSL的解决办法
- Qt 判断字符串满足某种格式
- bzoj 3123: [Sdoi2013]森林 (主席树+启发式合并+并查集)
- 网络爬虫--scrapy-redis安装教程
- mysql学习之-小技巧
- RCNN学习笔记(1):《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》论文笔记