kotlin 常用工具类

    /**
     * 根据身份证的号码算出当前身份证持有者的年龄
     *
     * @return
     */
    fun countAge(idNumber: String): Int? {
        if (idNumber.isNullOrEmpty()) {
            return null
        }
        if (idNumber.length != 18 && idNumber.length != 15) {
            return 0
        }
        val year: String
        val yue: String
        val day: String
        if (idNumber.length == 18) {
            year = idNumber.substring(6).substring(0, 4) // 得到年份
            yue = idNumber.substring(10).substring(0, 2) // 得到月份
            day = idNumber.substring(12).substring(0, 2) //得到日
        } else {
            year = "19" + idNumber.substring(6, 8) // 年份
            yue = idNumber.substring(8, 10) // 月份
            day = idNumber.substring(10, 12) //日
        }
        val date = Date() // 得到当前的系统时间
        val format = SimpleDateFormat("yyyy-MM-dd")
        val fyear: String = format.format(date).substring(0, 4) // 当前年份
        val fyue: String = format.format(date).substring(5, 7) // 月份
        val fday: String = format.format(date).substring(8, 10) //
        var age = 0
        age = if (yue.toInt() == fyue.toInt()) { //如果月份相同
            //说明已经过了生日或者今天是生日
            if (day.toInt() <= fday.toInt()) {
                fyear.toInt() - year.toInt()
            } else {
                fyear.toInt() - year.toInt() - 1
            }
        } else {
            if (yue.toInt() < fyue.toInt()) {
                //如果当前月份大于出生月份
                fyear.toInt() - year.toInt()
            } else {
                //如果当前月份小于出生月份,说明生日还没过
                fyear.toInt() - year.toInt() - 1
            }
        }
        println("age = $age")
        return age
    }
    // 校验身份证的校验码
    fun verify(idcard: String): Boolean {
        if(idcard.isNullOrEmpty()){
            return false
        }
        val regex = Regex("\\d{15}(\\d{2}[0-9xX])?")
        return idcard.matches(regex)
    }

    /**
     * 护照校验
     */
    fun passportCard(card:String):Boolean  {
        val reg = Regex("^([a-zA-z]|[0-9]){5,17}$");
        return true
        return card.matches(reg)
    }

    /**
     * 港澳台居民来往内地通行证
     * 规则: H/M + 10位或6位数字
     * 例:H1234567890
     */
    fun isHKCard(card:String):Boolean {
        val reg1 = Regex("^[HMhm]{1}([0-9]{10}|[0-9]{8})$");
        val reg2 =Regex("^[0-9]{8}$")
        val reg3 =Regex("^[0-9]{10}$")
        return true
        return card.matches(reg1) || card.matches(reg2) || card.matches(reg3)
    }

    /**
     * 数字转换为万
     */
   fun formatNumToTenThousand(num: Int): String? {
        return if (num < 10000) {
             num.toString()
        } else {
            val c = (num.toDouble() / 10000).toString()
            val list = c.split(".")
            return if(list[1].toInt() == 0){
                "${list[0]}万"
            }else {
                "${list[0]}.${list[1].substring(0,1)}万"
            }
        }
    }

    fun formatNumToTenThousand(num: Long): String? {
        return if (num < 10000) {
            num.toString()
        } else {
            val c = (num.toDouble() / 10000).toString()
            val list = c.split(".")
            return if(list[1].toInt() == 0){
                "${list[0]}万"
            }else {
                "${list[0]}.${list[1].substring(0,1)}万"
            }
        }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值