写在前面

该方法目前只能处理Integer能够装得下的值,已经处理了【零...】的情况

有实现思路,仅供参考,发现问题可调优的地方多谢指正

上菜!!!

package com.xxx.util;import javax.validation.constraints.NotNull;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class StringUtil {private static final String[] CHINESE_NUMBER = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};private static final String[] UNIT = {"", "十", "百", "千"};private static final String[] MORE_THAN_TEN_THOUSAND = {"", "万", "亿"};private static final Pattern zeroPattern = Pattern.compile("[\u96f6]+");public static String convertArabNumToChineseNum(@NotNull Integer arabNum) {String[] split = arabNum.toString().split("");/*** step 1:第一次处理,只需要将数字转为汉字即可*/StringBuffer dealNum = new StringBuffer();for (int i = 0; i < split.length; i++) {dealNum.append(CHINESE_NUMBER[Integer.parseInt(split[i])]);}/*** step 2:将第一次处理后的数字保存下来,并清空stringBuffer以供后面使用,也可以重新声明一个*/String firstDealNum = dealNum.toString();dealNum.setLength(0);/*** step 3:将数字从后往前面取,每四位取一次,然后转换成千百十的数字,比如1234就转换为一千二百三十四* step 4:将数字拼接起来,顺带加上万亿等单位 count为是否已经达到万或者亿的数量级*/int count = 0;for (int i = firstDealNum.length(); i > 0; i -= 4) {String substring = firstDealNum.substring(i - 4 < 0 ? 0 : i - 4, i);String[] numbers = substring.split("");StringBuffer sb = new StringBuffer();for (int j = 0; j < numbers.length; j++) {String num = numbers[j];String unit = UNIT[numbers.length - 1 - j];if (CHINESE_NUMBER[0].equals(num)) {sb.append(num);}else{sb.append(num).append(unit);}}dealNum.insert(0, MORE_THAN_TEN_THOUSAND[count]);dealNum.insert(0, sb.toString());count++;}/*** step 5:个位是零的话给他干掉* step 6:将数字中的【零】【零...】替换为【零】*/if (dealNum.length() - 1 == dealNum.lastIndexOf("零")) {dealNum.deleteCharAt(dealNum.length() - 1);}Matcher matcher = zeroPattern.matcher(dealNum.toString());return matcher.replaceAll("零");}}

下面是试验结果

java--阿拉伯数字转中文数字相关推荐

  1. php 数字转中文函数 1转一,一个阿拉伯数字转中文数字的函数-PHP教程,PHP函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下 如果要用于金额的转换,对小数部分的处理要做一下修改 fun ...

  2. 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num: class Num(object): d ...

  3. 大写汉字转阿拉伯数字c语言,阿拉伯数字转中文数字方法详解(C++实现)

    阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法. 中文计数有一个特点,就是"零"的使用变化多端.阿拉伯数字中数字的 ...

  4. 一个阿拉伯数字转中文数字的函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改 < ...

  5. js阿拉伯数字转中文数字

    //阿拉伯数字转中文数字function noToChinese(num) {if (!/^\d*(\.\d*)?$/.test(num)) {alert("Number is wrong! ...

  6. python数字转中文_阿拉伯数字转换为中文数字的python实现

    #!/usr/bin/python # -*- coding: utf-8 -*- ''' 脚本功能:阿拉伯数字与中文数字转换 输入参数:阿拉伯数字,不带符号 初次编写日期:2018-07-24 说明 ...

  7. python输出中文加数字_Python实现阿拉伯数字加上中文数字

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num : class Num(object): ...

  8. 阿拉伯数字与中文数字的相互转换

    汉字用零一二三四五六七八九作为基本计数,与阿拉伯数字靠数字偏移位置不一样. 中文数字是 "数字+权位"的方式组成数字,比如百,千,万. 中文数字每个数字后都会跟上一个权位,权位就是 ...

  9. JavaScript实现阿拉伯数字转中文数字

    JavaScript实现阿拉伯数字转中文数字 项目场景: 解决方案 项目场景: 项目相关背景: 阿拉伯数字转中文数字,例如123,转为一百二十三 解决方案 function intToChinese ...

  10. 将阿拉伯数字转换为中文数字: 123 -> 一二三

    //将阿拉伯数字转换为中文数字: 123 -> 一二三String getCNNum(int srcNum) {/*** 汉字*/String[] CN_CHARS = new String[] ...

最新文章

  1. centos 7 安装GTK+-2.0
  2. 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI
  3. java jdbc连接数据库的设计
  4. docker oracle navicat_拥抱开源从零开始 Docker、Mysql amp; JPA
  5. 显示ip地址及包含采集功能的全套函数源代码
  6. 【BZOJ 2753】 2753: [SCOI2012]滑雪与时间胶囊 (分层最小树形图,MST)
  7. 总结之前做项目中要注意的一些书写规范
  8. Oracle10g数据库的树立
  9. jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准
  10. Spring缓存注解@CachePut , @CacheEvict,@CacheConfig使用
  11. Vue父子组件传递数据
  12. 箭头函数写法_箭头函数
  13. 朗逸机器人_几张动图告诉你,工业机器人无所不能!
  14. 第9章 逻辑回归 学习笔记 下
  15. 【地图学】高斯-克吕格(Gauss-Kruger)投影原理、应用详解(3°带、6°带)
  16. pycharm切换python环境_在PyCharm的 Terminal(终端)切换Python版本的方法
  17. 华东理工大学计算机考研资料汇总
  18. 求解N的N次方的个位数
  19. codeforces B.Maximum Absurdity 解题报告
  20. AMOLED真的比LCD屏幕更伤眼吗

热门文章

  1. 购买腾讯云服务器流程
  2. Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)
  3. 【学术会议】如何rebuttal学术论文?
  4. mac系统下载nvm管理node版本
  5. 【Rust每周一库】sled - 嵌入式数据库
  6. 一篇相当不错的js function详解 读了一定有收获
  7. 本周比赛一些感想(5.25~5.31)
  8. Android 实现嵌套滑动
  9. P3386 【模板】二分图匹配(匈牙利算法)
  10. 低配版点燃我温暖你爱心代码