Java 阿拉伯数字转换为中文大写数字

StringHelper工具类:

public class StringHelper {  public static String[] strToStrArray(String str, String separator) {return strToStrArrayManager(str, separator);}private static String[] strToStrArrayManager(String str, String separator) {StringTokenizer strTokens = new StringTokenizer(str, separator);String[] strArray = new String[strTokens.countTokens()];int i = 0;while (strTokens.hasMoreTokens()) {strArray[i] = strTokens.nextToken().trim();i++;}return strArray;}}

核心类:

public class ChineseNumber {private static final String[] BEFORE_SCALE = { "万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "" };private static final String[] AFTER_SCALE = { "角", "分" };private static final String DEFAULT_PATH_SEPARATOR = ".";private static final Map<String, String> NUMBER_MAPPING = new HashMap<String, String>();
static {NUMBER_MAPPING.put("0", "零");NUMBER_MAPPING.put("1", "壹");NUMBER_MAPPING.put("2", "贰");NUMBER_MAPPING.put("3", "叁");NUMBER_MAPPING.put("4", "肆");NUMBER_MAPPING.put("5", "伍");NUMBER_MAPPING.put("6", "陆");NUMBER_MAPPING.put("7", "柒");NUMBER_MAPPING.put("8", "捌");NUMBER_MAPPING.put("9", "玖");
}public static String getChineseNumber(String number) {return getChineseNumber(number, null, null);
}public static String getChineseNumber(String number, String unit, String postfix) {String[] numbers = StringHelper.strToStrArray(number, DEFAULT_PATH_SEPARATOR);if (numbers.length > 2) {new NumberFormatException("数字格式错误!");}int length = numbers[0].length();int isZero = 0;StringBuffer result = new StringBuffer();for (int i = 0; i < length; i++) {String digit = String.valueOf(numbers[0].charAt(i));boolean allZero = true; // 如果后继的全部是零,则跳出for (int j = i; j < length; j++) {if (numbers[0].charAt(j) != '0') {allZero = false;break;}}if (allZero) {boolean hasValue = false;for (int z = i; z >= 0; z--) {if (numbers[0].charAt(z) != '0' && length - z <= 7 && length - z >= 5) {hasValue = true;break;}}// 加万单位if ( ( length - i > 4 && length <= 8 ) || ( hasValue && length - i > 4 )) {result.append(BEFORE_SCALE[8]);}// 加亿单位if (length - i >= 9) {result.append(BEFORE_SCALE[4]);}break;}if (length < 9 && length - i == 5) {if (!"0".equals(digit) && isZero > 0) {result.append(NUMBER_MAPPING.get("0"));}if ("0".equals(digit)) {result.append(BEFORE_SCALE[8]);if (isZero > 0) {result.append(NUMBER_MAPPING.get("0"));}continue;}}if ("0".equals(digit) && length > 9 && length - i == 9) {result.append(BEFORE_SCALE[4]);continue;}if (isZero < 1 || !"0".equals(digit)) {if ("0".equals(digit)) {if (length - i != 6 && length - i != 7) {result.append(NUMBER_MAPPING.get(digit));}} else {result.append(NUMBER_MAPPING.get(digit));}if (!"0".equals(digit)) {result.append(BEFORE_SCALE[BEFORE_SCALE.length - length + i]);}}if ("0".equals(digit)) {isZero++;} else {isZero = 0;}}result.append(unit == null ? "圆" : result.append(unit));if (numbers.length == 1) {result.append(postfix == null ? "整" : result.append(postfix));return result.toString();}length = numbers[1].length();for (int j = 0; j < length; j++) {if (j > 2) {break;}if (numbers[1].charAt(j) == '0') {continue;}result.append(NUMBER_MAPPING.get(String.valueOf(numbers[1].charAt(j))));result.append(AFTER_SCALE[j]);}result.append(postfix == null ? "整" : result.append(postfix));return result.toString();
}public static String getChineseNumber(int number) {return getChineseNumber(new Integer(number));
}public static String getChineseNumber(int number, String unit, String postfix) {return getChineseNumber(new Integer(number), unit, postfix);
}public static String getChineseNumber(Long number) {return getChineseNumber(number.toString(), null, null);
}public static String getChineseNumber(Integer number) {return getChineseNumber(number.toString(), null, null);
}public static String getChineseNumber(Integer number, String unit, String postfix) {return getChineseNumber(number.toString(), unit, postfix);
}public static String getChineseNumber(Long number, String unit, String postfix) {return getChineseNumber(number.toString(), unit, postfix);
}public static String getChineseNumber(long number) {return getChineseNumber(new Long(number));
}public static String getChineseNumber(long number, String unit, String postfix) {return getChineseNumber(new Long(number), unit, postfix);
}public static String getChineseNumber(double number, String unit, String postfix) {DecimalFormat f = (DecimalFormat) DecimalFormat.getInstance();f.applyLocalizedPattern("#.##");return getChineseNumber(f.format(number), unit, postfix);
}public static String getChineseNumber(double number) {return getChineseNumber(number, null, null);
}public static String getChineseNumber(Double number) {return getChineseNumber(number.doubleValue());
}public static String getChineseNumber(Double number, String unit, String postfix) {return getChineseNumber(number.doubleValue(), unit, postfix);
}public static void main(String[] args) {System.out.println(getChineseNumber(2019));System.out.println(getChineseNumber(2345.632234));System.out.println(getChineseNumber(2345.68657));System.out.println(getChineseNumber(235667));}
}

Java阿拉伯数字转换为中文大写相关推荐

  1. VB 阿拉伯数字转换为中文大写数值函数

    Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like " ...

  2. 将阿拉伯数字转换为中文大写数字 —— pyhton实现

    将阿拉伯数字转换为中文大写数字 -- pyhton实现 在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的 功能.这次实验将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字 ...

  3. Python:阿拉伯数字转换为中文大写数字(金额的读数规则)

    萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创. IDE:pycharm python版本:python3.7 ''' 实验目的:在银 ...

  4. 金额阿拉伯数字转换为中文大写

    最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = " ...

  5. 如何把阿拉伯数字转换为中文大写?

    之前在CSDN论坛里,看有人Show了一些把中文大写转换成阿拉伯数字的程序代码,自己也用Java语言实现了程序设计,基本上能够实现十万亿以内的任何数字的转换.之前也帖出自己的实现代码. 但我个人认为, ...

  6. Python 阿拉伯数字转换为中文大写数字

    题目 python练习的一个小实验,  题目如下图: 附阿拉伯数字对应的中文大写: 思路 1. 通过定义一个字典进行阿拉伯数字与大写中文的对比储存 2. 将用户的输入首先分割为整数与小数部分分别进行处 ...

  7. 阿拉伯数字转换为中文大写数字

    这个功能使用场景不多,百度也能找到很多相关代码,只不过我找了几个看的不是很明白,为了锻炼自己的思维能力,所以就干脆自己写了一个,不仅分享代码,同时也分享一下我的思路 JS代码 let moneyCas ...

  8. java将输入的整数转换为中文大写(查表)

    java将输入的整数转换为中文大写 例如: 输入:2135: 输出:零佰零拾零万贰仟壹佰叁拾伍元 package day10;import java.util.Scanner;/*** @author ...

  9. 正则也很牛,把阿拉伯数字的金额转换为中文大写数字

    using System; using System.Text.RegularExpressions; class Program {   // 把阿拉伯数字的金额转换为中文大写数字   static ...

  10. Lua阿拉伯数字转中文大写数字

    function numberToString(szNum)---阿拉伯数字转中文大写local szChMoney = ""local iLen = 0local iNum = ...

最新文章

  1. 【JavaScript】parseInt
  2. 前端ui框架_跨屏建站发布同名响应式前端ui框架
  3. POJ - 2083 Fractal(dfs,递归画图)
  4. matlab地址数据类型uns,使用matlab生成sine波mif文件
  5. 数据结构基础(20) --图的存储结构
  6. IllegalStateException: Error reading delta file hdfs://xxx/spark/xx/state/0/11/1.delta
  7. 为增强软件供应链安全,NIST 发布《开发者软件验证最低标准指南》
  8. 无法显示此网页 php模拟,新手进行php的模拟登录 按照网页的代码进行输入无法显示结果...
  9. linux 使用ACR122U-A9设备读写M1卡
  10. matlab 定义离散函数,matlab离散点拟合函数
  11. modbus tcp调试助手_wemos D1 arduino项目实战1-TCP协议连接Tlink平台①
  12. 屏幕坏点测试网页版(无需安装)
  13. linux学习---内存管理以及结存结构描述
  14. 微信小程序base64转为二维码、条形码图片
  15. 中华第一考----系统架构设计师考试
  16. 计算机调出任务管理器的组合键是,如何打开任务管理器 打开任务管理器的方法【方法详解】...
  17. 三星手机出现com.sec.android.app.sa,如何去除Galaxy S20/S20 /Ultra/S10/系统内置的Bixby三星Pay等软件Ap......
  18. c++第四天(补充引用的定义)
  19. PUTTY连接之诡异现象:虚拟机连接方式
  20. 全国主要城市空气质量热点图

热门文章

  1. 虹膜手机元年,支付是杀手级场景
  2. 我!程序媛!上家阿里巴巴,下家字节跳动!薪资翻番!选择裸辞躺平!无限期休息!...
  3. 为计算机房的电脑安装防火墙和杀毒软件,杀毒软件和防火墙的关系,哪个重要...
  4. python 安装ltp
  5. 分布式项目Maven打包出现Could not resolve dependencies for project、Could not find artifact问题解决
  6. 仿微信图片编辑软件,涂鸦、裁剪、添加文本等常规操作
  7. 重温数据结构与算法之单调栈
  8. 帝国cms ajax,帝国CMS封装的ajax加载信息框架代码
  9. Ubuntu U盘启动盘制作步骤
  10. 北京总体城市设计战略研究│成果