Java阿拉伯数字转换为中文大写
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阿拉伯数字转换为中文大写相关推荐
- VB 阿拉伯数字转换为中文大写数值函数
Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like " ...
- 将阿拉伯数字转换为中文大写数字 —— pyhton实现
将阿拉伯数字转换为中文大写数字 -- pyhton实现 在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的 功能.这次实验将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字 ...
- Python:阿拉伯数字转换为中文大写数字(金额的读数规则)
萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创. IDE:pycharm python版本:python3.7 ''' 实验目的:在银 ...
- 金额阿拉伯数字转换为中文大写
最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = " ...
- 如何把阿拉伯数字转换为中文大写?
之前在CSDN论坛里,看有人Show了一些把中文大写转换成阿拉伯数字的程序代码,自己也用Java语言实现了程序设计,基本上能够实现十万亿以内的任何数字的转换.之前也帖出自己的实现代码. 但我个人认为, ...
- Python 阿拉伯数字转换为中文大写数字
题目 python练习的一个小实验, 题目如下图: 附阿拉伯数字对应的中文大写: 思路 1. 通过定义一个字典进行阿拉伯数字与大写中文的对比储存 2. 将用户的输入首先分割为整数与小数部分分别进行处 ...
- 阿拉伯数字转换为中文大写数字
这个功能使用场景不多,百度也能找到很多相关代码,只不过我找了几个看的不是很明白,为了锻炼自己的思维能力,所以就干脆自己写了一个,不仅分享代码,同时也分享一下我的思路 JS代码 let moneyCas ...
- java将输入的整数转换为中文大写(查表)
java将输入的整数转换为中文大写 例如: 输入:2135: 输出:零佰零拾零万贰仟壹佰叁拾伍元 package day10;import java.util.Scanner;/*** @author ...
- 正则也很牛,把阿拉伯数字的金额转换为中文大写数字
using System; using System.Text.RegularExpressions; class Program { // 把阿拉伯数字的金额转换为中文大写数字 static ...
- Lua阿拉伯数字转中文大写数字
function numberToString(szNum)---阿拉伯数字转中文大写local szChMoney = ""local iLen = 0local iNum = ...
最新文章
- 【JavaScript】parseInt
- 前端ui框架_跨屏建站发布同名响应式前端ui框架
- POJ - 2083 Fractal(dfs,递归画图)
- matlab地址数据类型uns,使用matlab生成sine波mif文件
- 数据结构基础(20) --图的存储结构
- IllegalStateException: Error reading delta file hdfs://xxx/spark/xx/state/0/11/1.delta
- 为增强软件供应链安全,NIST 发布《开发者软件验证最低标准指南》
- 无法显示此网页 php模拟,新手进行php的模拟登录 按照网页的代码进行输入无法显示结果...
- linux 使用ACR122U-A9设备读写M1卡
- matlab 定义离散函数,matlab离散点拟合函数
- modbus tcp调试助手_wemos D1 arduino项目实战1-TCP协议连接Tlink平台①
- 屏幕坏点测试网页版(无需安装)
- linux学习---内存管理以及结存结构描述
- 微信小程序base64转为二维码、条形码图片
- 中华第一考----系统架构设计师考试
- 计算机调出任务管理器的组合键是,如何打开任务管理器 打开任务管理器的方法【方法详解】...
- 三星手机出现com.sec.android.app.sa,如何去除Galaxy S20/S20 /Ultra/S10/系统内置的Bixby三星Pay等软件Ap......
- c++第四天(补充引用的定义)
- PUTTY连接之诡异现象:虚拟机连接方式
- 全国主要城市空气质量热点图
热门文章
- 虹膜手机元年,支付是杀手级场景
- 我!程序媛!上家阿里巴巴,下家字节跳动!薪资翻番!选择裸辞躺平!无限期休息!...
- 为计算机房的电脑安装防火墙和杀毒软件,杀毒软件和防火墙的关系,哪个重要...
- python 安装ltp
- 分布式项目Maven打包出现Could not resolve dependencies for project、Could not find artifact问题解决
- 仿微信图片编辑软件,涂鸦、裁剪、添加文本等常规操作
- 重温数据结构与算法之单调栈
- 帝国cms ajax,帝国CMS封装的ajax加载信息框架代码
- Ubuntu U盘启动盘制作步骤
- 北京总体城市设计战略研究│成果