zoukankan      html  css  js  c++  java
  • 判断银行卡号格式是否正确

    /**
     * Created by Administrator on 2016/9/18.
     * 验证银行卡格式是否正确
     */
    public class CheckIdCard {
        /**
         * 校验银行卡卡号
         *
         * @param cardId
         * @return
         */
        public static boolean checkBankCard(String cardId) {
            char bit = getBankCardCheckCode(cardId
                    .substring(0, cardId.length() - 1));
            if (bit == 'N') {
                return false;
            }
            return cardId.charAt(cardId.length() - 1) == bit;
        }
    
        /**
         * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
         *
         * @param nonCheckCodeCardId
         * @return
         */
        public static char getBankCardCheckCode(String nonCheckCodeCardId) {
            if (nonCheckCodeCardId == null
                    || nonCheckCodeCardId.trim().length() == 0
                    || !nonCheckCodeCardId.matches("\d+")) {
                // 如果传的不是数据返回N
                return 'N';
            }
            char[] chs = nonCheckCodeCardId.trim().toCharArray();
            int luhmSum = 0;
            for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
                int k = chs[i] - '0';
                if (j % 2 == 0) {
                    k *= 2;
                    k = k / 10 + k % 10;
                }
                luhmSum += k;
            }
            return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');
        }
    }
  • 相关阅读:
    macOS 上配置 Lua
    Oracle.ManagedDataAccess.dll
    offer
    Costura.Fody
    日志系统
    实战框架ABP
    什么是算法?
    HTTP状态码->HTTP Status Code
    How to untar a TAR file using Apache Commons
    python实践3:cursor() — 数据库连接操作
  • 原文地址:https://www.cnblogs.com/niupi/p/5881342.html
Copyright © 2011-2022 走看看