范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

编程小技巧阿拉伯数字转中文汉字的Java方法

  之前做财务相关的系统时,阿拉伯数字需要转换成中文汉字。
  当时知识储备不足。一直没有满意的方案。
  今天特意思考这个问题,写下此方法,到目前为止算是最满意的方案了。import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern;  import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test;  public class TestNumberToChinese {      @Test     public void testConvertNumberToChinese() {         Assertions.assertArrayEquals(new Object[] { "零元"//                 , "零元" } //                 , new Object[] { TestNumberToChinese.convertNumberToChinese("0")//                         , TestNumberToChinese.convertNumberToChinese("0.00") });     }      public static String convertNumberToChinese(String inputData) {          Map decimalUnit = new HashMap<>();         decimalUnit.put(-2, "分");         decimalUnit.put(-1, "角");         decimalUnit.put(1, "元");         decimalUnit.put(2, "拾");         decimalUnit.put(3, "佰");         decimalUnit.put(4, "仟");         decimalUnit.put(5, "万");         decimalUnit.put(6, "拾");// 十万         decimalUnit.put(7, "佰");// 佰万         decimalUnit.put(8, "仟");// 仟万         decimalUnit.put(9, "亿");         decimalUnit.put(10, "拾");// 十亿         decimalUnit.put(11, "佰");// 佰亿         decimalUnit.put(12, "仟");// 仟亿         decimalUnit.put(13, "兆");         decimalUnit.put(14, "拾");// 十兆         decimalUnit.put(15, "佰");// 佰兆         decimalUnit.put(16, "仟");// 仟兆          List extraUnit = new ArrayList<>();         extraUnit.add("万");         extraUnit.add("亿");         extraUnit.add("兆");          Map unitCount = new HashMap<>();         unitCount.put(0, "零");         unitCount.put(1, "壹");         unitCount.put(2, "贰");         unitCount.put(3, "叁");         unitCount.put(4, "肆");         unitCount.put(5, "伍");         unitCount.put(6, "陆");         unitCount.put(7, "柒");         unitCount.put(8, "捌");         unitCount.put(9, "玖");          StringBuffer outputBufferData = new StringBuffer();          String integerData = null;         String scaleData = null;          Pattern decimalPattern = Pattern.compile("^(d{1,16}).(d{0,2})#34;);         Matcher decimalMatcher = decimalPattern.matcher(inputData);         Pattern integerPattern = Pattern.compile("^(d{1,16})#34;);         Matcher integerMatcher = integerPattern.matcher(inputData);         if (decimalMatcher.find()) {// 小数的场合             integerData = decimalMatcher.group(1);             scaleData = decimalMatcher.group(2);         } else if (integerMatcher.matches()) {// 整数的场合             integerData = inputData;         }          // 转换整数         if (integerData != null && integerData != "") {             for (int k = 0; k < integerData.length(); k++) {                 char inputChar = integerData.charAt(k);                 int currentUnitCount = Character.getNumericValue(inputChar);                 String currentUnit = decimalUnit.get(integerData.length() - k);                 String numToChinese = null;                 if (currentUnitCount == 0) {                     numToChinese = unitCount.get(currentUnitCount);                     if (k == integerData.length() - 1) {                         numToChinese = unitCount.get(currentUnitCount) + currentUnit;                     } else if (extraUnit.contains(currentUnit)) {                         numToChinese = currentUnit;                     }                  } else {                     numToChinese = unitCount.get(currentUnitCount) + currentUnit;                 }                 outputBufferData.append(numToChinese);             }         }         // 转换小数         if (scaleData != null && scaleData != "") {             for (int k = 0; k < scaleData.length(); k++) {                 char inputChar = scaleData.charAt(k);                 int currentUnitCount = Character.getNumericValue(inputChar);                 String currentUnit = decimalUnit.get(Math.negateExact(k + 1));                 String numToChinese = null;                 if (currentUnitCount == 0) {                     numToChinese = unitCount.get(currentUnitCount);                 } else {                     numToChinese = unitCount.get(currentUnitCount) + currentUnit;                 }                 outputBufferData.append(numToChinese);             }         }          String ouputData = outputBufferData.toString();          // 去除重复的零         ouputData = ouputData.replaceAll("(零{2,})", "");         if (!ouputData.equals("零元")) {             // 去除不合理的单位             ouputData = ouputData.replaceAll("^(零元)", "");             ouputData = ouputData.replaceAll("(亿万)", "亿");             ouputData = ouputData.replaceAll("(兆亿)", "兆");             // 去除首位的零             ouputData = ouputData.replaceAll("^(零{1})", "");             // 去除末位的零             ouputData = ouputData.replaceAll("(零{1})#34;, "");         }          return ouputData;     } }

华为Mate50定档明年3月份,双环双主摄居中挖孔,不支持5G最近业内有很多消息表示华为Mate50或将于本月发布,但据相关消息称,华为P50系列刚在7月份发布,Mate系列并不会来得这么快,毕竟两款新机的定位档期会有一定明显的时间间隔,相关两位化学家夺回诺贝尔化学奖!靠的是你熟悉又陌生的成果当地时间10月6日,瑞典皇家科学院宣布,将2021年诺贝尔化学奖授予本杰明利斯特(BenjaminList)和戴维麦克米伦(DavidW。C。MacMillan),以表彰他们对不对手机后台耗电量过大怎样关闭?这个问题我来问答吧,因为本人的职业是一个回收废旧手机的小贩,常年回收各种烂手机,因为要卖呀,所以在卖之前要经过各种测试,其中电池耐用与否,这是一部二手手机性能硬件之一,因此杀后是我匈牙利将建欧洲首个5G智慧铁路港新华社布达佩斯10月5日电(记者袁亮)中国华为匈牙利子公司日前与匈牙利东西联运物流公司及英国电信运营商沃达丰匈牙利公司签署了建设东西门场站的合作协议。该项目将建设欧洲首个使用5G专投资者对话录(四)投资者甲问你看好小米的理由是什么?关键性的理由。投资者乙答效率。投资者甲问从哪些地方体现?乙答营销支出比例是C端智能硬件公司中最少的。说明企业本身有势能,口碑传播不错坪效仅次于苹果耳聋戴助听器好吗,真的有用吗?助听器当然好,我是耳模凹陷,神经性耳聋,从一九八九年开始戴助听器,己经三十年了,效果很好。我是作宣传工作的,一九八九年任珲春市委宣传部科长,由于耳朵听力不好,影响工作,单位给我配了助听器可代购吗,多少钱一台的比较好?你好,助听器是属于二类医疗器械,所以是需要一对一验配的。佩戴助听器前需到专业的助听器验配中心进行验配。验配是指在助听器专业技术人员的指导下选择适合自己听力状况的助听器。每个人的听力为什么有的人助听器怎么调都听不见?您好,有的人助听器怎么调都调不好是因为1。助听器的效果跟本身的听力损失程度有很大关系,如果这个人的听力损失很重,并且高频下降很厉害,助听器的对高频的补偿是有限的,所以助听器的效果会新能源车充电难不可小觑国庆假日期间,新能源车主在高速公路服务区排队4小时充电的新闻上了热搜。新能源车充电难问题,再次引发关注。不可否认,车流量陡增是新能源车充电难的一大原因。据国家电网统计,10月1日到奇瑞新能源不少人说,这一次,瑞虎e的配置,也不是那些遗憾,但实际上,这台车还是很给力的,尤其是在车上,它还是有个性的,比如说它的科技感还是比较强的。而这一代智能手机智能的配置,也成为了新能源干饭人必备,ERNTE智能料理盒体验上班族们对微波炉一定非常熟悉,每到饭点儿,公司的微波炉前总会排起长长的队伍,只为节省短短的午餐时间,把手头忙不完的工作再赶一赶,但殊不知,工作是永远干不完的,我们需要有健康的身体,
华为P50折叠屏刚发布!iPhone13Pro降价800元,两者对比优势明显赶在年底之外,华为发布了华为P50Pocket这款产品,这也是华为首款上下小屏折叠屏手机,起售价8988元,关于这款产品,很多人后台私信问我值不值得买,和iPhone13Pro相比小米12双高端双尺寸双骁龙2K顶级屏,是否是你最期待的小米?小米已官宣于12于28日1930发布年度新旗舰小米12。官方宣传图片仅供参考这次的小米喊话学习苹果,给大家带来了最期待的一大一小双旗舰,两款屏幕尺寸分别为6。28英寸中置挖孔顶级A华为发布新品折叠屏手机,折叠屏风口或悄然已至据和讯科技网消息,近日,华为举办的冬季新品发布会中,推出折叠屏手机新品华为P50Pocket,可实现机身的无缝折叠,后置镜头支持荧光摄影功能,售价8988元起。此前,OPPOFin国产芯片出现转机,苹果优势越来越少,华为算是后继有人了现如今手机成为了我们生活中的刚需,而手机之所以能成为手机,自然很大程度上也要依赖其核心硬件芯片。提到芯片相信大家都清楚,我国自研芯片的能力还是比较有限的,毕竟在半导体行业起步是比较苹果连续登顶,降价就可以爆卖,国产手机还有希望吗?苹果手机销量暴增甚至登顶后,我反而更加乐观额,的确,很多网友看到苹果登顶都惊愕而且愤怒。一方面是没想到华为的市场大部分都被苹果吃掉了,很多人恨铁不成钢,国产手机并没有取得更好的成绩华为最便宜折叠手机,宝盒P50Pocket来了,会对三星造成威胁吗华为之前已经发布了多款折叠屏手机,均是MateX系列。这些折叠屏手机,设计风格类似,均为中间折叠。最大的变化之处就是,从华为MateX的外翻折设计,变成了华为MateX2的内翻折设Python与Java哪种语言是2022年的最佳语言你不知道你应该学习哪种编程语言吗?如果计划在2022年开始编写代码,而且只有一个选项,Python与Java谁会在对决中获胜。猪年即将来临,这使得在技术范围内寻找新的可能性变得更加区块链BSC匿名币DCS为何有百倍潜力?重点来袭1。随着区块链的普及,转账都是公开透明没有隐私,资产容易暴露出来,市场刚需,隐私匿名赛道具有万亿市场。2。TP钱包币安链上部署的DAPP,资金在用户自己手里,安全可靠,所有DAO概念火热,DAONFT打造新的DeFi乐高1NFT展览及碎片化业务当前,各类NFT轮流火爆,其中又以CryptoPunks最具代表性。随后便出现了各类分叉项目及不伦不类的仿盘,但用户似乎并不乐意为其买单,而是更加倾向于买入数字化汽车的元宇宙当下元宇宙是个热门话题,那么元宇宙和新能源汽车有什么关联了?有一定的关联,先来看看元宇宙的特质是UGC,也就是用户共创内容。其技术几乎揽括了ARVR5G云计算Web3。0社交广告娱为什么微软要把数据中心设在水下?数据中心制冷有多花钱?最近微软在数据中心业务上有了个新的方向,就是把数据中心沉入海底该技术利用原本为潜艇研发的散热技术,利用海底的低水温来为数据中心散热。计划将来建成服务器农场,整个放置在水下以节约宝贵