From a9e7e916f1b4b4ce682a339b126a585c25817246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Tue, 7 Dec 2021 17:20:46 +0800 Subject: [PATCH 1/2] fix:readme --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fcec087..7cc1203 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,21 @@ # Utils -#### 介绍 +## 介绍 想做点工具玩玩 -#### 软件架构 +## 软件架构 软件架构说明 1. maven 2. java SE -#### 安装教程 +## 安装教程 1. 直接拷贝工具类代码嵌入自己项目即可 2. [克隆地址](https://gitee.com/linqiankun/Utils.git) 3. [文档介绍](https://gitee.com/linqiankun/Utils/wikis/Home) -#### 使用说明 +## 使用说明 1. 直接拷贝工具类代码嵌入自己项目即可 2. 目前已完成一部分,经测试可以使用 -- Gitee From 3ff841f8ce87e0fbf133c0153979741525f38024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Tue, 7 Dec 2021 18:15:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 + .../com/lin/util/ChineseToEnglish2Util.java | 588 ++++++++++++++++++ .../java/com/lin/util/RmbUppercaseUtil.java | 149 +++++ src/main/resources/markdown/util/util.md | 2 + 4 files changed, 741 insertions(+) create mode 100644 src/main/java/com/lin/util/ChineseToEnglish2Util.java create mode 100644 src/main/java/com/lin/util/RmbUppercaseUtil.java diff --git a/README.md b/README.md index 7cc1203..f873055 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ 6. Xml解析工具(XmlParseUtil) 7. 反射工具(InvokeUtil) 8. 省份城市工具(ProvinceCityUtil) + 9. 汉字转拼音工具(ChineseToEnglish2Util) + 10. 人名币转大写工具(RmbUppercaseUtil) 2. pdfutil 1. 多个pdf合成工具(MutilPdfToOnePdfUtil) 2. pdf转图片工具(PdfToPicUtil) diff --git a/src/main/java/com/lin/util/ChineseToEnglish2Util.java b/src/main/java/com/lin/util/ChineseToEnglish2Util.java new file mode 100644 index 0000000..91a421f --- /dev/null +++ b/src/main/java/com/lin/util/ChineseToEnglish2Util.java @@ -0,0 +1,588 @@ +package com.lin.util; + +import java.io.UnsupportedEncodingException; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Set; + +/** + * 汉字转拼音工具 + * + * @author 九分石人 + */ +public class ChineseToEnglish2Util { + private static LinkedHashMap spellMap = null; + + static { + if (spellMap == null) { + spellMap = new LinkedHashMap(500); + } + initialize(); + } + + private ChineseToEnglish2Util() { + + } + + private static void spellPut(String spell, int ascii) { + spellMap.put(spell, new Integer(ascii)); + } + + private static void initialize() { + spellPut("a", -20319); + spellPut("ai", -20317); + spellPut("an", -20304); + spellPut("ang", -20295); + spellPut("ao", -20292); + spellPut("ba", -20283); + spellPut("bai", -20265); + spellPut("ban", -20257); + spellPut("bang", -20242); + spellPut("bao", -20230); + spellPut("bei", -20051); + spellPut("ben", -20036); + spellPut("beng", -20032); + spellPut("bi", -20026); + spellPut("bian", -20002); + spellPut("biao", -19990); + spellPut("bie", -19986); + spellPut("bin", -19982); + spellPut("bing", -19976); + spellPut("bo", -19805); + spellPut("bu", -19784); + spellPut("ca", -19775); + spellPut("cai", -19774); + spellPut("can", -19763); + spellPut("cang", -19756); + spellPut("cao", -19751); + spellPut("ce", -19746); + spellPut("ceng", -19741); + spellPut("cha", -19739); + spellPut("chai", -19728); + spellPut("chan", -19725); + spellPut("chang", -19715); + spellPut("chao", -19540); + spellPut("che", -19531); + spellPut("chen", -19525); + spellPut("cheng", -19515); + spellPut("chi", -19500); + spellPut("chong", -19484); + spellPut("chou", -19479); + spellPut("chu", -19467); + spellPut("chuai", -19289); + spellPut("chuan", -19288); + spellPut("chuang", -19281); + spellPut("chui", -19275); + spellPut("chun", -19270); + spellPut("chuo", -19263); + spellPut("ci", -19261); + spellPut("cong", -19249); + spellPut("cou", -19243); + spellPut("cu", -19242); + spellPut("cuan", -19238); + spellPut("cui", -19235); + spellPut("cun", -19227); + spellPut("cuo", -19224); + spellPut("da", -19218); + spellPut("dai", -19212); + spellPut("dan", -19038); + spellPut("dang", -19023); + spellPut("dao", -19018); + spellPut("de", -19006); + spellPut("deng", -19003); + spellPut("di", -18996); + spellPut("dian", -18977); + spellPut("diao", -18961); + spellPut("die", -18952); + spellPut("ding", -18783); + spellPut("diu", -18774); + spellPut("dong", -18773); + spellPut("dou", -18763); + spellPut("du", -18756); + spellPut("duan", -18741); + spellPut("dui", -18735); + spellPut("dun", -18731); + spellPut("duo", -18722); + spellPut("e", -18710); + spellPut("en", -18697); + spellPut("er", -18696); + spellPut("fa", -18526); + spellPut("fan", -18518); + spellPut("fang", -18501); + spellPut("fei", -18490); + spellPut("fen", -18478); + spellPut("feng", -18463); + spellPut("fo", -18448); + spellPut("fou", -18447); + spellPut("fu", -18446); + spellPut("ga", -18239); + spellPut("gai", -18237); + spellPut("gan", -18231); + spellPut("gang", -18220); + spellPut("gao", -18211); + spellPut("ge", -18201); + spellPut("gei", -18184); + spellPut("gen", -18183); + spellPut("geng", -18181); + spellPut("gong", -18012); + spellPut("gou", -17997); + spellPut("gu", -17988); + spellPut("gua", -17970); + spellPut("guai", -17964); + spellPut("guan", -17961); + spellPut("guang", -17950); + spellPut("gui", -17947); + spellPut("gun", -17931); + spellPut("guo", -17928); + spellPut("ha", -17922); + spellPut("hai", -17759); + spellPut("han", -17752); + spellPut("hang", -17733); + spellPut("hao", -17730); + spellPut("he", -17721); + spellPut("hei", -17703); + spellPut("hen", -17701); + spellPut("heng", -17697); + spellPut("hong", -17692); + spellPut("hou", -17683); + spellPut("hu", -17676); + spellPut("hua", -17496); + spellPut("huai", -17487); + spellPut("huan", -17482); + spellPut("huang", -17468); + spellPut("hui", -17454); + spellPut("hun", -17433); + spellPut("huo", -17427); + spellPut("ji", -17417); + spellPut("jia", -17202); + spellPut("jian", -17185); + spellPut("jiang", -16983); + spellPut("jiao", -16970); + spellPut("jie", -16942); + spellPut("jin", -16915); + spellPut("jing", -16733); + spellPut("jiong", -16708); + spellPut("jiu", -16706); + spellPut("ju", -16689); + spellPut("juan", -16664); + spellPut("jue", -16657); + spellPut("jun", -16647); + spellPut("ka", -16474); + spellPut("kai", -16470); + spellPut("kan", -16465); + spellPut("kang", -16459); + spellPut("kao", -16452); + spellPut("ke", -16448); + spellPut("ken", -16433); + spellPut("keng", -16429); + spellPut("kong", -16427); + spellPut("kou", -16423); + spellPut("ku", -16419); + spellPut("kua", -16412); + spellPut("kuai", -16407); + spellPut("kuan", -16403); + spellPut("kuang", -16401); + spellPut("kui", -16393); + spellPut("kun", -16220); + spellPut("kuo", -16216); + spellPut("la", -16212); + spellPut("lai", -16205); + spellPut("lan", -16202); + spellPut("lang", -16187); + spellPut("lao", -16180); + spellPut("le", -16171); + spellPut("lei", -16169); + spellPut("leng", -16158); + spellPut("li", -16155); + spellPut("lia", -15959); + spellPut("lian", -15958); + spellPut("liang", -15944); + spellPut("liao", -15933); + spellPut("lie", -15920); + spellPut("lin", -15915); + spellPut("ling", -15903); + spellPut("liu", -15889); + spellPut("long", -15878); + spellPut("lou", -15707); + spellPut("lu", -15701); + spellPut("lv", -15681); + spellPut("luan", -15667); + spellPut("lue", -15661); + spellPut("lun", -15659); + spellPut("luo", -15652); + spellPut("ma", -15640); + spellPut("mai", -15631); + spellPut("man", -15625); + spellPut("mang", -15454); + spellPut("mao", -15448); + spellPut("me", -15436); + spellPut("mei", -15435); + spellPut("men", -15419); + spellPut("meng", -15416); + spellPut("mi", -15408); + spellPut("mian", -15394); + spellPut("miao", -15385); + spellPut("mie", -15377); + spellPut("min", -15375); + spellPut("ming", -15369); + spellPut("miu", -15363); + spellPut("mo", -15362); + spellPut("mou", -15183); + spellPut("mu", -15180); + spellPut("na", -15165); + spellPut("nai", -15158); + spellPut("nan", -15153); + spellPut("nang", -15150); + spellPut("nao", -15149); + spellPut("ne", -15144); + spellPut("nei", -15143); + spellPut("nen", -15141); + spellPut("neng", -15140); + spellPut("ni", -15139); + spellPut("nian", -15128); + spellPut("niang", -15121); + spellPut("niao", -15119); + spellPut("nie", -15117); + spellPut("nin", -15110); + spellPut("ning", -15109); + spellPut("niu", -14941); + spellPut("nong", -14937); + spellPut("nu", -14933); + spellPut("nv", -14930); + spellPut("nuan", -14929); + spellPut("nue", -14928); + spellPut("nuo", -14926); + spellPut("o", -14922); + spellPut("ou", -14921); + spellPut("pa", -14914); + spellPut("pai", -14908); + spellPut("pan", -14902); + spellPut("pang", -14894); + spellPut("pao", -14889); + spellPut("pei", -14882); + spellPut("pen", -14873); + spellPut("peng", -14871); + spellPut("pi", -14857); + spellPut("pian", -14678); + spellPut("piao", -14674); + spellPut("pie", -14670); + spellPut("pin", -14668); + spellPut("ping", -14663); + spellPut("po", -14654); + spellPut("pu", -14645); + spellPut("qi", -14630); + spellPut("qia", -14594); + spellPut("qian", -14429); + spellPut("qiang", -14407); + spellPut("qiao", -14399); + spellPut("qie", -14384); + spellPut("qin", -14379); + spellPut("qing", -14368); + spellPut("qiong", -14355); + spellPut("qiu", -14353); + spellPut("qu", -14345); + spellPut("quan", -14170); + spellPut("que", -14159); + spellPut("qun", -14151); + spellPut("ran", -14149); + spellPut("rang", -14145); + spellPut("rao", -14140); + spellPut("re", -14137); + spellPut("ren", -14135); + spellPut("reng", -14125); + spellPut("ri", -14123); + spellPut("rong", -14122); + spellPut("rou", -14112); + spellPut("ru", -14109); + spellPut("ruan", -14099); + spellPut("rui", -14097); + spellPut("run", -14094); + spellPut("ruo", -14092); + spellPut("sa", -14090); + spellPut("sai", -14087); + spellPut("san", -14083); + spellPut("sang", -13917); + spellPut("sao", -13914); + spellPut("se", -13910); + spellPut("sen", -13907); + spellPut("seng", -13906); + spellPut("sha", -13905); + spellPut("shai", -13896); + spellPut("shan", -13894); + spellPut("shang", -13878); + spellPut("shao", -13870); + spellPut("she", -13859); + spellPut("shen", -13847); + spellPut("sheng", -13831); + spellPut("shi", -13658); + spellPut("shou", -13611); + spellPut("shu", -13601); + spellPut("shua", -13406); + spellPut("shuai", -13404); + spellPut("shuan", -13400); + spellPut("shuang", -13398); + spellPut("shui", -13395); + spellPut("shun", -13391); + spellPut("shuo", -13387); + spellPut("si", -13383); + spellPut("song", -13367); + spellPut("sou", -13359); + spellPut("su", -13356); + spellPut("suan", -13343); + spellPut("sui", -13340); + spellPut("sun", -13329); + spellPut("suo", -13326); + spellPut("ta", -13318); + spellPut("tai", -13147); + spellPut("tan", -13138); + spellPut("tang", -13120); + spellPut("tao", -13107); + spellPut("te", -13096); + spellPut("teng", -13095); + spellPut("ti", -13091); + spellPut("tian", -13076); + spellPut("tiao", -13068); + spellPut("tie", -13063); + spellPut("ting", -13060); + spellPut("tong", -12888); + spellPut("tou", -12875); + spellPut("tu", -12871); + spellPut("tuan", -12860); + spellPut("tui", -12858); + spellPut("tun", -12852); + spellPut("tuo", -12849); + spellPut("wa", -12838); + spellPut("wai", -12831); + spellPut("wan", -12829); + spellPut("wang", -12812); + spellPut("wei", -12802); + spellPut("wen", -12607); + spellPut("weng", -12597); + spellPut("wo", -12594); + spellPut("wu", -12585); + spellPut("xi", -12556); + spellPut("xia", -12359); + spellPut("xian", -12346); + spellPut("xiang", -12320); + spellPut("xiao", -12300); + spellPut("xie", -12120); + spellPut("xin", -12099); + spellPut("xing", -12089); + spellPut("xiong", -12074); + spellPut("xiu", -12067); + spellPut("xu", -12058); + spellPut("xuan", -12039); + spellPut("xue", -11867); + spellPut("xun", -11861); + spellPut("ya", -11847); + spellPut("yan", -11831); + spellPut("yang", -11798); + spellPut("yao", -11781); + spellPut("ye", -11604); + spellPut("yi", -11589); + spellPut("yin", -11536); + spellPut("ying", -11358); + spellPut("yo", -11340); + spellPut("yong", -11339); + spellPut("you", -11324); + spellPut("yu", -11303); + spellPut("yuan", -11097); + spellPut("yue", -11077); + spellPut("yun", -11067); + spellPut("za", -11055); + spellPut("zai", -11052); + spellPut("zan", -11045); + spellPut("zang", -11041); + spellPut("zao", -11038); + spellPut("ze", -11024); + spellPut("zei", -11020); + spellPut("zen", -11019); + spellPut("zeng", -11018); + spellPut("zha", -11014); + spellPut("zhai", -10838); + spellPut("zhan", -10832); + spellPut("zhang", -10815); + spellPut("zhao", -10800); + spellPut("zhe", -10790); + spellPut("zhen", -10780); + spellPut("zheng", -10764); + spellPut("zhi", -10587); + spellPut("zhong", -10544); + spellPut("zhou", -10533); + spellPut("zhu", -10519); + spellPut("zhua", -10331); + spellPut("zhuai", -10329); + spellPut("zhuan", -10328); + spellPut("zhuang", -10322); + spellPut("zhui", -10315); + spellPut("zhun", -10309); + spellPut("zhuo", -10307); + spellPut("zi", -10296); + spellPut("zong", -10281); + spellPut("zou", -10274); + spellPut("zu", -10270); + spellPut("zuan", -10262); + spellPut("zui", -10260); + spellPut("zun", -10256); + spellPut("zuo", -10254); + } + + /** + * 获得单个汉字的Ascii. + * + * @param cn char 汉字字符 + * @return int 错误返回 0,否则返回ascii + */ + public static int getCnAscii(char cn) { + try { + byte[] bytes = (String.valueOf(cn)).getBytes(); + bytes = (String.valueOf(cn)).getBytes("gbk"); + if (bytes == null || bytes.length > 2 || bytes.length <= 0) { //错误 + return 0; + } + if (bytes.length == 1) { //英文字符 + return bytes[0]; + } + if (bytes.length == 2) { //中文字符 + int hightByte = 256 + bytes[0]; + int lowByte = 256 + bytes[1]; + + int ascii = (256 * hightByte + lowByte) - 256 * 256; + + return ascii; + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return 0; //错误 + + } + + /** + * 根据ASCII码到SpellMap中查找对应的拼音 + * + * @param ascii int + * 字符对应的ASCII + * @return String + * 拼音,首先判断ASCII是否>0&<160,如果是返回对应的字符, + *
否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音. + */ + public static String getSpellByAscii(int ascii) { + if (ascii > 0 && ascii < 160) { //单字符 + return String.valueOf((char) ascii); + } + + if (ascii < -20319 || ascii > -10247) { //不知道的字符 + return null; + } + + Set keySet = spellMap.keySet(); + Iterator it = keySet.iterator(); + + String spell0 = null; + String spell = null; + + int asciiRang0 = -20319; + int asciiRang; + while (it.hasNext()) { + spell = (String) it.next(); + Object valObj = spellMap.get(spell); + if (valObj instanceof Integer) { + asciiRang = ((Integer) valObj).intValue(); + + if (ascii >= asciiRang0 && ascii < asciiRang) { //区间找到 + return (spell0 == null) ? spell : spell0; + } else { + spell0 = spell; + asciiRang0 = asciiRang; + } + } + } + + return null; + + } + + /** + * 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换 + * + * @param cnStr String + * 字符串 + * @return String + * 转换成全拼后的字符串 + */ + public static String getFullSpell(String cnStr) { + if (null == cnStr || "".equals(cnStr.trim())) { + return cnStr; + } + + char[] chars = cnStr.toCharArray(); + StringBuffer retuBuf = new StringBuffer(); + for (int i = 0, Len = chars.length; i < Len; i++) { + int ascii = getCnAscii(chars[i]); + if (ascii == 0) { //取ascii时出错 + retuBuf.append(chars[i]); + } else { + String spell = getSpellByAscii(ascii); + if (spell == null) { + retuBuf.append(chars[i]); + } else { + retuBuf.append(spell); + } // end of if spell == null + } // end of if ascii <= -20400 + } // end of for + + return retuBuf.toString(); + } + + /** + * 第一个字取全拼,后面的字取首字母 + * + * @param cnStr + * @return 返回转换后的拼 + */ + public static String getFirstSpell(String cnStr) { + if (null == cnStr || "".equals(cnStr.trim())) { + return cnStr; + } + + char[] chars = cnStr.toCharArray(); + StringBuffer retuBuf = new StringBuffer(); + for (int i = 0, Len = chars.length; i < Len; i++) { + int ascii = getCnAscii(chars[i]); + + if (ascii == 0) { //取ascii时出错 + retuBuf.append(chars[i]); + } else { + String spell = getSpellByAscii(ascii); + if (spell == null) { + retuBuf.append(chars[i]); + } else { + if (i == 0) { //第一个字取全拼 + retuBuf.append(spell); + } else { //后面的字取首字母 + retuBuf.append(spell.substring(0, 1)); + } + } + } + + } // end of for + return retuBuf.toString(); + } + + public static void main(String[] args) { + String str = "浙江"; + // 转换成拼音 + String fullSpell = ChineseToEnglish2Util.getFullSpell(str); + String s1 = fullSpell.substring(0, 1).toUpperCase() + fullSpell.substring(1); + System.out.println(s1); + + + // 中文第一个字全拼,其余去首字母 + System.out.println(ChineseToEnglish2Util.getFirstSpell(str)); + // ascii 转 字母 + System.out.println(ChineseToEnglish2Util.getSpellByAscii(65)); + // 字母 转 ascii + System.out.println(ChineseToEnglish2Util.getCnAscii('0')); + } +} \ No newline at end of file diff --git a/src/main/java/com/lin/util/RmbUppercaseUtil.java b/src/main/java/com/lin/util/RmbUppercaseUtil.java new file mode 100644 index 0000000..aa2831b --- /dev/null +++ b/src/main/java/com/lin/util/RmbUppercaseUtil.java @@ -0,0 +1,149 @@ +package com.lin.util; + +import java.math.BigDecimal; + +/** + * 人民币转大写工具 + * + * @author 九分石人 + */ +public class RmbUppercaseUtil { + + public static String digitUppercase(double n) { + String fraction[] = {"角", "分"}; + String digit[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; + String unit[][] = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}}; + + String head = n < 0 ? "负" : ""; + n = Math.abs(n); + + String s = ""; + for (int i = 0; i < fraction.length; i++) { + s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", ""); + } + if (s.length() < 1) { + s = "整"; + } + int integerPart = (int) Math.floor(n); + + for (int i = 0; i < unit[0].length && integerPart > 0; i++) { + String p = ""; + for (int j = 0; j < unit[1].length && n > 0; j++) { + p = digit[integerPart % 10] + unit[1][j] + p; + integerPart = integerPart / 10; + } + s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s; + } + return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整"); + } + + + /** + * 汉语中数字大写 + */ + private static final String[] CN_UPPER_NUMBER = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; + /** + * 汉语中货币单位大写,这样的设计类似于占位符 + */ + private static final String[] CN_UPPER_UNIT = {"分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟"}; + /** + * 特殊字符:整 + */ + private static final String CN_FULL = "整"; + /** + * 特殊字符:负 + */ + private static final String CN_NEGATIVE = "负"; + /** + * 金额的精度,默认值为2 + */ + private static final int MONEY_PRECISION = 2; + /** + * 特殊字符:零元整 + */ + private static final String CN_ZERO_FULL = "零元" + CN_FULL; + + /** + * 把输入的金额转换为汉语中人民币的大写 + */ + public static String toRmbUpper(BigDecimal numberOfMoney) { + StringBuilder sb = new StringBuilder(); + // -1, 0, or 1 as the value of this BigDecimal is negative, zero, or + // positive. + int signum = numberOfMoney.signum(); + // 零元整的情况 + if (signum == 0) { + return CN_ZERO_FULL; + } + //这里会进行金额的四舍五入 + long number = numberOfMoney.movePointRight(MONEY_PRECISION).setScale(0, 4).abs().longValue(); + // 得到小数点后两位值 + long scale = number % 100; + int numUnit = 0; + int numIndex = 0; + boolean getZero = false; + // 判断最后两位数,一共有四中情况:00 = 0, 01 = 1, 10, 11 + if (!(scale > 0)) { + numIndex = 2; + number = number / 100; + getZero = true; + } + if ((scale > 0) && (!(scale % 10 > 0))) { + numIndex = 1; + number = number / 10; + getZero = true; + } + int zeroSize = 0; + while (true) { + if (number <= 0) { + break; + } + // 每次获取到最后一个数 + numUnit = (int) (number % 10); + if (numUnit > 0) { + if ((numIndex == 9) && (zeroSize >= 3)) { + sb.insert(0, CN_UPPER_UNIT[6]); + } + if ((numIndex == 13) && (zeroSize >= 3)) { + sb.insert(0, CN_UPPER_UNIT[10]); + } + sb.insert(0, CN_UPPER_UNIT[numIndex]); + sb.insert(0, CN_UPPER_NUMBER[numUnit]); + getZero = false; + zeroSize = 0; + } else { + ++zeroSize; + if (!(getZero)) { + sb.insert(0, CN_UPPER_NUMBER[numUnit]); + } + if (numIndex == 2) { + if (number > 0) { + sb.insert(0, CN_UPPER_UNIT[numIndex]); + } + } else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) { + sb.insert(0, CN_UPPER_UNIT[numIndex]); + } + getZero = true; + } + // 让number每次都去掉最后一个数 + number = number / 10; + ++numIndex; + } + // 如果signum == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负 + if (signum == -1) { + sb.insert(0, CN_NEGATIVE); + } + // 输入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整 + if (!(scale > 0)) { + sb.append(CN_FULL); + } + return sb.toString(); + } + + public static void main(String[] args) { + double d = 108660.51; + System.out.println(digitUppercase(d)); + System.out.println(toRmbUpper(BigDecimal.valueOf(d))); + System.err.println(BigDecimal.valueOf(d).toString()); + } +} \ No newline at end of file diff --git a/src/main/resources/markdown/util/util.md b/src/main/resources/markdown/util/util.md index fb3e9b0..f70f13a 100644 --- a/src/main/resources/markdown/util/util.md +++ b/src/main/resources/markdown/util/util.md @@ -11,6 +11,8 @@ 7. 反射工具(InvokeUtil) 8. 省份城市工具(ProvinceCityUtil) 9. 数组排序工具(ArraySortUtil) +10. 汉字转拼音工具(ChineseToEnglish2Util) +11. 人名币转大写工具(RmbUppercaseUtil) ## test pass -- Gitee