Kotlin 金额小写转大写

import java.util.Scanner

fun formatMoney(arg: Long): String {
    var num = arg
    var reversed = 0L
    //将输入的数字进行翻转
    while (num != 0L) {
        val digit = num % 10L
        reversed = reversed * 10L + digit
        num /= 10L
    }
    var str = reversed.toString().toCharArray()
    var arr = arrayOf('园', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万', '拾', '佰', '仟')
    var out_num = ""
    //小写替换成大写
    for ((ind, e) in str.withIndex()) {
        var temp = ""
        when (e) {
            '0' -> temp = "零"
            '1' -> temp = "壹"
            '2' -> temp = "贰"
            '3' -> temp = "叁"
            '4' -> temp = "肆"
            '5' -> temp = "伍"
            '6' -> temp = "陆"
            '7' -> temp = "柒"
            '8' -> temp = "捌"
            '9' -> temp = "玖"
        }

        out_num = temp + arr[ind + 1] + out_num
//        println(e)

    }
//    println(out_num)
    var result = out_num
    for (i in 0 until str.size) {
        result = result.replace("零拾", "零")
            .replace("零佰", "零")
            .replace("零仟", "零")
            .replace("零万", "万")
            .replace("零亿", "亿")
            .replace("零零", "零")
            .replace("零元", "元")
            .replace("元零", "元")
            .replace("亿万", "亿")
    }

    return result + "元整"

}

fun main() {
    val read = Scanner(System.`in`)
    System.out.println("请输入您想要转化的数字:");
    val nextLong = read.nextLong()
    if (nextLong != 0L) {
        System.out.println("转换结果为:" + formatMoney(nextLong));
    };


}

 

posted @ 2021-03-10 15:02  tomcat9  阅读(353)  评论(0)    收藏  举报