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. chrome dev debug network 的timeline说明
  2. TIME_CHECK_PLAUSIBILITY
  3. C# 连接SQLServer数据库及登录验证知识
  4. 凡子谷机器人创客教育_【活动纪实】机器人创客教育课堂——液压升降台
  5. Waymo研发经理:《自动驾驶感知前沿技术介绍》
  6. 命令行 蓝牙_Ubuntu使用BlueZ驱动蓝牙dongle
  7. 迷你版Spring MVC 实现
  8. 题解——loj6278 数列分块入门2 (分块)
  9. JAVA引用aar_AndroidStudio之如何引入和使用aar包
  10. 蓝桥杯B组省赛预赛第一题2013(高斯日记)
  11. memcached群集
  12. 老罗Android开发视频教程 15集
  13. socket用起始码分割_编码器基础——格雷码的编码美学
  14. c语言源程序的基础单位,c源程序的基本单位是什么
  15. Android程序员英文介绍,安卓程序员面试英文自我介绍
  16. 我国CN域名一年减少600万个 全要求实名注册
  17. Java讯序_java使用顺序表制作电子通讯录,实现添加,删除和排序的功能.
  18. 年终个人对公司所提的建议
  19. Fluent材料属性之比热容计算方法
  20. alpine linux中安装docker

热门文章

  1. oracle数据投毒,Oracle Database Server 'TNS Listener'远程数据投毒漏洞
  2. Orthogonal greedy algorithm降维
  3. java调用ltp分词_开源中文分词工具探析(七):LTP
  4. 大数据人工智能常用特征工程与数据预处理Python实践(2)
  5. vs2008 html5 的安装,vs2008安装教程,详细教您vs2008安装教程
  6. 【dgl学习】dgl的构图和使用
  7. html选项卡出现乱码,html乱码
  8. 百练oj2816:红与黑
  9. 怎么样把谷歌浏览器的默认背景颜色设置成绿豆沙
  10. linux上mysql定时备份数据库数据_linux下如何实现mysql数据库每天自动备份定时备份...