Android 输入银行卡 格式化

比较 微信支付宝 添加银行卡

实现每四位隔符号

Format 算法 代码 Kotlin

输入 待格式化串 ,分隔符号
输出 格式化串

 /**
  * 通用bankcardFormat
  */
    @JvmStatic fun newBankcardFormat(args: String,split: String) : String {
        var ret : String  = args.replace(" ","").replace(split,"")
        if (Pattern.matches("^\\d{17,}$", ret)) {
            ret = ret.replace("(\\d{4})(\\d{4})(\\d{4})(\\d{4})(\\d*)".toRegex(), "$1" + split + "$2" + split + "$3" + split + "$4"+split + "$5")
        }else if (Pattern.matches("^\\d{13,}$", ret)) {
            ret =  ret.replace("(\\d{4})(\\d{4})(\\d{4})(\\d*)".toRegex(), "$1"+split+"$2"+split+"$3"+split+"$4")
        }else if(Pattern.matches("^\\d{9,}$", ret)){
            ret =  ret.replace("(\\d{4})(\\d{4})(\\d*)".toRegex(), "$1"+split+"$2"+split+"$3")
        }else if(Pattern.matches("^\\d{5,}$", ret)){
            ret = ret.replace("(\\d{4})(\\d*)".toRegex(), "$1"+split+"$2")
        }else{
            ret =  ret.replace("(\\d*)".toRegex(), "$1")
        }
        return ret
    }

函数使用

为 EditText 添加 TextWatcher 监听

        editBank.addTextChangedListener(object : TextWatcher {
            private var oldString = ""
            override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {

            }

            override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {

            }

            override fun afterTextChanged(s: Editable) {
                if (oldString.equals(s.toString())) {
                    oldString = ""
                    return
                } else {
                //格式化
                    oldString = InputFilters.newBankcardFormat(s.toString(), "-")
                    s.replace(0, s.toString().length, oldString)
                }
            }
        })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值