美文网首页
一个数字转成中文的小工具

一个数字转成中文的小工具

作者: 暗渡_ce70 | 来源:发表于2020-01-14 10:17 被阅读0次

直接撸代码了

package xxxxxxxxxx;

/**
 * Created by LiuXiaoDong on 2020-01-10.
 * 数字转汉字工具
 */
public class NumberToChineseUtil {

    /**
     * 任意 数字 转汉字
     *
     * @param number
     * @return
     */
    public static String intToChinese(int number) {
        StringBuilder sb = new StringBuilder();
        String data = String.valueOf(number);
        int index = 0;
        while (data.length() > 4) {
            String valueStr = data.substring(data.length() - 4);
            sb.insert(0, intToChineseUnderW(valueStr));
            sb.insert(0, getMaxUnitChinese(index));
            index++;
            data = data.substring(0, data.length() - 4);
        }
        sb.insert(0, intToChineseUnderW(data));
        return sb.toString();
    }


    /**
     * 万以下转化,不到一万用这个效率高一些
     *
     * @return
     */
    public static String intToChineseUnderW(int number) {
        String data = String.valueOf(number);
        return intToChineseUnderW(data);
    }

    /**
     * 万以下转化,与上面逻辑不一样。这个会存在 0011的情况上面只会是11
     *
     * @return
     */
    public static String intToChineseUnderW(String data) {
        int number = Integer.valueOf(data);
        if (data.length() > 4) {
            //不处理万以上
            return "";
        }
        if (data.length() == 2 && number / 10 == 1) {
            if (number % 10 == 0) {
                return "十";
            }
            return "十" + getChinese(number % 10);
        }
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = data.length() - 1; i >= 0; i--) {
            int value = Integer.valueOf(data.substring(i, i + 1));
            if (value != 0) {
                stringBuilder.insert(0, getUnitChinese(data.length() - i));
            }
            stringBuilder.insert(0, getChinese(value));
        }
        String result = stringBuilder.toString();
        while (result.contains("零零")) {
            result = result.replace("零零", "零");
        }
        //最后一个零抹去,避免 600 == 六百零
        if (result.length() > 0 && "零".equals(result.substring(result.length() - 1))) {
            result = result.substring(0, result.length() - 1);
        }
        return result;
    }

    /**
     * 根据不同的情况获取对应的中文
     *
     * @param num
     * @return
     */

    public static String getChinese(int num) {
        switch (num) {
            case 1:
                return "一";
            case 2:
                return "二";
            case 3:
                return "三";
            case 4:
                return "四";
            case 5:
                return "五";
            case 6:
                return "六";
            case 7:
                return "七";
            case 8:
                return "八";
            case 9:
                return "九";
            case 0:
                return "零";

        }
        return "";
    }

    /**
     * 根据数字的位数返回最大位数的单位
     *
     * @param length
     * @return
     */
    public static String getUnitChinese(int length) {
        switch (length) {
            case 2:
                return "十";
            case 3:
                return "百";
            case 4:
                return "千";
        }
        return "";
    }

    /**
     * 根据数字的位数返回对应单位
     *
     * @param index
     * @return
     */
    public static String getMaxUnitChinese(int index) {
        switch (index) {
            case 0:
                return "万";
            case 1:
                return "亿";
            case 2:
                return "万亿";
            //后续可以补充,int到不了。得改成long需要自己改
        }
        return "";
    }


    public static void main(String[] args) {
        System.out.print(intToChinese(1231231242));
    }
}

如果不想闲复制麻烦的兄弟,可以直接下载java文件。地址:https://download.csdn.net/download/u011400848/12101103

相关文章

  • 一个数字转成中文的小工具

    直接撸代码了 如果不想闲复制麻烦的兄弟,可以直接下载java文件。地址:https://download.csdn...

  • Python中文数转阿拉伯数

    提供一个可用的中文数字转阿拉伯数字的函数,效果是把类似“五十六”、“柒”、“十八”这些中文数字转成“56”、“7”...

  • js 类型的转换

    转成字符串 转成数字 转成布尔

  • 阿拉伯数字转中文

    阿拉伯数字转中文# 最近需要写一个阿拉伯数字转成汉字的功能,在网上搜到的资源都没有对小数进行处理,因此我做了一些小...

  • excel常用方法公式

    整理了一点平时常用的一些表格公式: 阿拉伯数字转成中文大写数字公式:=NUMBERSTRING(B1,2),B1代...

  • iOS(OC) 阿拉伯数字和汉字数字互换

    在开发中遇到一个需求,就是需要将阿拉伯数字转成汉字数字,或者将汉字数字转成阿拉伯数字 比如:123---> 一百二...

  • iOS(OC) 阿拉伯数字和汉字数字互换

    方法一 在开发中遇到一个需求,就是需要将阿拉伯数字转成汉字数字,或者将汉字数字转成阿拉伯数字比如:123---> ...

  • bug的数字5转成了中文五

    做项目的时候,运营那边突然发来一个bug图 ​ 发现原本单纯的 5 被解析成了 .... 一顿神查,webpac...

  • 关于JavaScript的隐式转换

    一、 数字与数字之间的转换 1.字符串加数字,数字就会转成字符串。 2.数字减字符串,字符串转成数字。如果字符串不...

  • python汉字转拼音

    场景说明 把中文汉字、转成汉语拼音,包括: 纯汉字转拼音 汉字里面加有字母转拼音 转加声调的拼音 转用数字表示声调...

网友评论

      本文标题:一个数字转成中文的小工具

      本文链接:https://www.haomeiwen.com/subject/aomoactx.html