package com.bdyh.utils;import org.apache.commons.lang3.StringUtils;public class ChineseNumToArabicNumUtil {static char[] cnArr = new char [] {'一','二','三','四','五','六','七','八','九'};static char[] chArr = new char [] {'十','百','千','万','亿'};static String allChineseNum = "零一二三四五六七八九十百千万亿";/*** 将汉字中的数字转换为阿拉伯数字* @param chineseNum* @return*/public static int chineseNumToArabicNum(String chineseNum) {int result = 0;int temp = 1;//存放一个单位的数字如:十万int count = 0;//判断是否有chArrfor (int i = 0; i < chineseNum.length(); i++) {boolean b = true;//判断是否是chArrchar c = chineseNum.charAt(i);for (int j = 0; j < cnArr.length; j++) {//非单位,即数字if (c == cnArr[j]) {if(0 != count){//添加下一个单位之前,先把上一个单位值添加到结果中result += temp;temp = 1;count = 0;}// 下标+1,就是对应的值temp = j + 1;b = false;break;}}if(b){//单位{'十','百','千','万','亿'}for (int j = 0; j < chArr.length; j++) {if (c == chArr[j]) {switch (j) {case 0:temp *= 10;break;case 1:temp *= 100;break;case 2:temp *= 1000;break;case 3:temp *= 10000;break;case 4:temp *= 100000000;break;default:break;}count++;}}}if (i == chineseNum.length() - 1) {//遍历到最后一个字符result += temp;}}return result;}/*** 将数字转换为中文数字, 这里只写到了万* @param intInput* @return*/public static String arabicNumToChineseNumUp(int intInput){String chineseNumTemp = arabicNumToChineseNum(intInput);if(StringUtils.isBlank(chineseNumTemp)){chineseNumTemp = "零";}else {if(chineseNumTemp.length()>=2 && chineseNumTemp.substring(0,1).equals("一") &&chineseNumTemp.substring(1,2).equals("十")){chineseNumTemp = chineseNumTemp.substring(1,chineseNumTemp.length());}}return chineseNumTemp;}private static String arabicNumToChineseNum(int intInput) {String si = String.valueOf(intInput);String sd = "";if (si.length() == 1) {if (intInput == 0) {return sd;}sd += cnArr[intInput - 1];return sd;} else if (si.length() == 2) {if (si.substring(0, 1).equals("1")) {sd += "一十";if (intInput % 10 == 0) {return sd;}}elsesd += (cnArr[intInput / 10 - 1] + "十");sd += arabicNumToChineseNum(intInput % 10);} else if (si.length() == 3) {sd += (cnArr[intInput / 100 - 1] + "百");if (String.valueOf(intInput % 100).length() < 2) {if (intInput % 100 == 0) {return sd;}sd += "零";}sd += arabicNumToChineseNum(intInput % 100);} else if (si.length() == 4) {sd += (cnArr[intInput / 1000 - 1] + "千");if (String.valueOf(intInput % 1000).length() < 3) {if (intInput % 1000 == 0) {return sd;}sd += "零";}sd += arabicNumToChineseNum(intInput % 1000);} else if (si.length() == 5) {sd += (cnArr[intInput / 10000 - 1] + "万");if (String.valueOf(intInput % 10000).length() < 4) {if (intInput % 10000 == 0) {return sd;}sd += "零";}sd += arabicNumToChineseNum(intInput % 10000);}return sd;}/*** 判断传入的字符串是否全是汉字数字* @param chineseStr* @return*/public static boolean isChineseNum(String chineseStr) {char [] ch = chineseStr.toCharArray();for (char c : ch) {if (!allChineseNum.contains(String.valueOf(c))) {return false;}}return true;}/*** 判断数字字符串是否是整数字符串* @param str* @return*/public static boolean isNum(String str) {String reg = "[0-9]+";return str.matches(reg);}public static void main(String[] args) {System.out.println(arabicNumToChineseNum(39999));}}

中文数字和阿拉伯数字之间互相转化相关推荐

  1. 中文数字与阿拉伯数字转换(Python)

    cn2an 是一个快速转化 中文数字 和 阿拉伯数字 的工具包 相关链接 cn2an工具包Github地址 在线测试平台 install git clone https://github.com/Ai ...

  2. cn2.php中文,Python使用cn2an实现中文数字与阿拉伯数字的相互转换

    工作中经常遇到阿拉伯数字转换称为中文数字或者大写金额,在网上搜了下,cn2an口碑较好,遂进行了一番学习. 安装 pip install cn2an 依赖库为setuptools.PyYAML 查看版 ...

  3. 使用cn2an实现中文数字与阿拉伯数字的相互转换

    工作中经常遇到阿拉伯数字转换称为中文数字或者大写金额,在网上搜了下,cn2an口碑较好,遂进行了一番学习. 安装 pip install cn2an 依赖库为setuptools.PyYAML 查看版 ...

  4. 中文数字与阿拉伯数字的转换

    工作中,中文大写数字/金额需要转为阿拉伯数字,原本自己写的解析转换太麻烦. 忽然发现有做好的模块cn2an: 优点: 1.可以直接识别句子中的中文数字,省去写re   2.不同的匹配模式控制精确度 缺 ...

  5. 已解决(Python cn2an库实现中文数字与阿拉伯数字互转)ValueError: mode 仅支持 [‘low‘, ‘up‘, ‘rmb‘, ‘direct‘]

    已解决(Python cn2an库实现中文数字与阿拉伯数字互转)ValueError: mode 仅支持 ['low', 'up', 'rmb', 'direct'] 文章目录 报错内容 报错翻译 报 ...

  6. python数字转中文字符_Python实现中文数字转换为阿拉伯数字的方法示例

    本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法.分享给大家供大家参考,具体如下: 一.需求 今天写了三千二百行代码. 今天写了3200行代码. 两行意思相同,只是表达方式不太能够,统一掉 ...

  7. python数字转换_Python实现中文数字转换为阿拉伯数字的方法示例

    本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法.分享给大家供大家参考,具体如下: 一.需求 今天写了三千二百行代码. 今天写了3200行代码. 两行意思相同,只是表达方式不太能够,统一掉 ...

  8. android数字转汉字,【原创】最精简的中文数字和阿拉伯数字互相转换函数

    public class ChineseNumUtils { /** * 中文数字转阿拉伯数字 * (长度不能超过long最大值) * * @param chNum 中文数字 * @return 阿拉 ...

  9. java中文数字与阿拉伯数字相互转换

    最近有一个业务需要用到中文数字与阿拉伯数字相互转换,废话不多说直接上代码. 中文数字/阿拉伯数字互转第一次完善:https://blog.csdn.net/qq_26896085/article/de ...

最新文章

  1. 【bzoj2844 albus就是要第一个出场】
  2. java保留小数_(转)Java保留小数位数的N中方法
  3. 源码网站都有哪些_一个网站都包括哪些费用?
  4. selenium测试(Java)--学习总结
  5. 腾讯云服务器CentOS安装JDK+Tomcat+MySQL详细步骤(以及遇到的各种坑)
  6. node js、npm、homebrew、cocoapod、git、hexo
  7. 新车可以无牌上路7天_铜竟然可以做成袜子,连穿7天不臭脚!
  8. [论文阅读] TransUNet: Transformers Make Strong Encoders for Medical Image Segmentation
  9. 关于java.lang.reflect.InvocationTargetException。
  10. 衡量神经网络的三个指标,参数量,multi-add,flop计算力
  11. Oracle [INS-13001]环境不满足最低要求
  12. Java中的各种数据类型的转换
  13. 一步教会fpga数字信号处理
  14. 华为静态,动态NAT,Easy IP实验!超详细,有手就能学会
  15. Mybatis复习1——B站
  16. 新书来了 | 邀您一起来看看
  17. 基于stm32的两轮自平衡小车4(软件调试篇)
  18. 日常使用计算机出现的小问题(一)win10操作系统设备和驱动器栏目中出现空白图标该如何删除?删除一次刷新又重新出现
  19. 职业生涯规划之自我探索论文
  20. 在opencv2.4.x版本中处理图像EXIF orientation不统一的问题

热门文章

  1. 步进电机使用总结——噪声与振动的抑制
  2. 2020德勤面试开始了吗_2020年四大春招已经启动,应届会计毕业生不容错过!
  3. 什么是低音炮,低音炮的原理与音效
  4. Three.js_解决谍影锯齿闪烁重影模型的方法
  5. 基于Android智能终端的远程控制系统
  6. Selenium WebDriver的多浏览器测试
  7. Web实现文件上传和下载
  8. C++ QT结合FFmpeg实战开发视频播放器-17FFmpeg基本介绍
  9. java利用iText工具包生成PDF
  10. 【数据结构与算法 11,互联网大厂面试必问的JVM底层原理