嘎嘎嘎,大写的尴尬,非常感谢Eliauk_cc-May反馈的bug,代码重新修改啦,鉴于之前过于复杂的逻辑,本次进行了简化

//判断是否为中文数字字符public static List<String> strList = List.of("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");//建立汉字数字零-九对应的阿拉伯数字0-9public static Map<Character, Integer> strMapList = Map.of('零', 0, '一', 1, '二', 2, '三', 3, '四', 4, '五', 5, '六', 6, '七', 7, '八', 8, '九', 9);//建立MAP汉字单位对应的阿拉伯单位public static Map<Character, Integer> numList = Map.of('十', 10, '百', 100, '千', 1000, '万', 10000, '亿', 100000000);/*** 中文数字转换为阿拉伯数字** @param str 需要转换的字符* @return 返回转换信息,为空则返回00* @author motcs* @since 2023-02-06*/private static String convertNumber(String str) {if (isChineseNum(str)) {char[] chars = str.toCharArray();Map<Integer, Integer> strMap = new LinkedHashMap<>();Map<Integer, Integer> numMap = new LinkedHashMap<>();for (int i1 = 0; i1 < chars.length; i1++) {if (strList.contains(String.valueOf(chars[i1]))) {strMap.put(i1, strMapList.get(chars[i1]));} else {if (!ObjectUtils.isEmpty(numMap) && !ObjectUtils.isEmpty(numMap.get(i1 - 1))) {numMap.put(i1 - 1, numMap.get(i1 - 1) * numList.get(chars[i1]));} else {numMap.put(i1 - 1, numList.get(chars[i1]));}if (numList.get(chars[i1]) <= 1000) {for (int i = i1; i < chars.length; i++) {Integer integer = numList.get(chars[i]);if (!ObjectUtils.isEmpty(integer) && integer >= 10000) {numMap.put(i1 - 1, numMap.get(i1 - 1) * numList.get(chars[i]));}}}}}Integer inted = 0;Set<Integer> integers = strMap.keySet();int i1 = integers.size();for (Integer integer : integers) {Integer integer1 = strMap.get(integer);if (!ObjectUtils.isEmpty(numMap) && !ObjectUtils.isEmpty(numMap.get(integer))) {integer1 = integer1 * numMap.get(integer);} else if (ObjectUtils.isEmpty(numMap)) {integer1 = integer1 * (int) Math.pow(10, i1 - 1);i1--;}inted += integer1;}if (inted < 10) {return "0" + inted;}return String.valueOf(inted);}return "00";}

验证是否是纯汉字数字

/*** 判断传入的字符串是否全是汉字数字** @param chineseStr 中文* @return 是否全是中文数字*/public static boolean isChineseNum(String chineseStr) {//判断是否都是中文简写汉字,想要使用繁体的可以自行修改return Stream.of(chineseStr.toCharArray()).noneMatch(c -> strList.contains(String.valueOf(c)));}

该方法支持数据格式:
1.正规的中文汉字数字: 如:一百二十一
2.支持缩写的汉字数字:如: 一五一

JAVA 中文汉字转换阿拉伯数字(最终版,已修复了亿及亿以下的汉数字的转换,超过后的数字,暂时不支持)相关推荐

  1. 中文汉字转阿拉伯数字

    1.中文汉字转阿拉伯数字 参考 思路:地位向高位遍历,每遇到一个数,乘以当前单位,累加在 res 上,遇到单位则改变当前单位 //可以处理十万以下 public class change {publi ...

  2. 阿里巴巴Java开发手册一周年最终版

    阿里巴巴Java开发手册一周年最终版 摘要:阿里巴巴集团推出的<阿里巴巴Java开发手册>是阿里巴巴近万名开发同学集体智慧的结晶,以开发视角为中心,详细列举如何开发更加高效.更加容错.更加 ...

  3. 苹果描述文件无法连接服务器,教你 game center无法连接服务器解决办法及iOS9.3.2公测版已修复GameCenter无响应bug...

    最近看到用户反映苹果游戏中心game center无法连接服务器出现白屏的情况,这是什么原因呢?今天小编就为大家带来解决方法,需要的朋友可以一起看看! 苹果game center白屏或者无法连接服务器 ...

  4. 短视频点赞平台美化整修最终版【修复后台错误+详细安装教程】

    程序介绍 这版短视频点赞平台美化整修最终版[修复后台错误+详细安装教程]也是近来很火爆的一款任务平台,推广佣金.邀请.任务发布提交.任务链接跳转.客服拉起等等全部都是完美,妥妥运营接单的接单运营版本. ...

  5. Java中文汉字排序

    概述 我们在应用程序中可能会经常遇到对中文排序的问题,例如姓名列表,词汇表等等.对中文排序,我们使用比较多的是根据汉语拼音发音来确定顺序. 我们可能会经常使用 java.util.Set接口, jav ...

  6. Android 中文API合集 最终版,androi中文api合集.doc

    androi中文api合集 HYPERLINK "/over140/archive/2011/01/04/1925146.html" Android 中文API合集(3)(83篇) ...

  7. java中文汉字按英文字母表排序

    先部署语言环境 Comparator,类型只能为Object 然后就可以排序或比较 /*** 类名称:cpm.java<br>* 类描述:汉字排序方案3<br>* 要求将汉字以 ...

  8. Windows ThinPC 最终版已 RTM

    微软刚刚宣布其旗下最新的 Windows 产品:Windows ThinPC 已经正式 RTM(eleased to manufacturing),并将于7月1日开始提供给购买了软件保障计划(SA)的 ...

  9. 简书bug(已修复):网络不佳时安卓1.11.3呈现的空白页面如图

    图片发自简书App 图片发自简书App 1.11.3最新内测版已修复上述bug 图片发自简书App

最新文章

  1. 劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(一)
  2. R语言对dataframe进行行数据筛选(row selection)多种方案:使用R原生方法、data.table、dplyr等方案
  3. 统计计量 | 诺奖得主Angrist的因果推断课程文献读物单子
  4. benchmark mysql_程序员的MySQL手册(二): 监控与benchmark
  5. 微信小程序开发--数据绑定
  6. VTK:相互作用之MouseEvents
  7. Android开发之RecyclerView之刷新数据notifyDataSetChanged失败的问题
  8. java 1.6 ubuntu_ubuntu配置 Java SE 1.6
  9. 360浏览器打不开网页_苹果移动端、PC端safari浏览器打不开网页的解决方案!
  10. 判断两颗棵二叉树是否相等
  11. ubuntu-18.04 设置开机启动脚本-亲测有效
  12. 【系统分析师之路】2020年下系统分析师案例分析真题
  13. docker 之镜像制作dockerfile
  14. 计算机ps如何更改数字,ps数字(ps改数字详细步骤)
  15. java 求梯形面积
  16. 删除/卸载干净红蜘蛛的.exe和.dll文件
  17. Python道路之——画自己名字
  18. 使用云服务器被攻击了怎么办
  19. 采用circlize包绘制Circos图
  20. 电脑Tab键有什么功能?分享Tab键的6个妙用

热门文章

  1. python 各种编码转换-进制转换及中文转unicode
  2. python3 中英文标点转换
  3. 千万不要招实习生啊!!!!
  4. 企业物联卡如何充值,几百张卡能同时充值吗?【物联卡中心】
  5. offsetHeight, clientHeight与scrollHeight的区别
  6. 如何解决工厂工时计算问题
  7. heritrix mysql_heritrix的简单使用以及在后台调用heritrix
  8. mysql食堂系统E R图_饭卡管理系统学生E-R图
  9. 2020东京奥运会金牌榜爬虫
  10. GPS从入门到放弃(十九)、精密星历(sp3格式)