数字转换为大写汉字

    xiaoxiao2021-04-15  98

    在财务类的开发中,常用到数字和大写汉字的转换,个人写了一个方法,希望可供参考:

    import java.util.HashMap; import java.util.Map; public class Number_ChineseDemo { public static void main(String[] args) { //测试数据 String numString="53621452454651"; String chineseNumberString=getChineseString(numString); System.out.println(chineseNumberString); } public static String getChineseString(String numString) { // 壹贰叁肆伍陆柒捌玖零 Map<Integer, String> numStr = new HashMap<Integer, String>(); numStr.put(1, "壹"); numStr.put(2, "贰"); numStr.put(3, "叁"); numStr.put(4, "肆"); numStr.put(5, "伍"); numStr.put(6, "陆"); numStr.put(7, "柒"); numStr.put(8, "捌"); numStr.put(9, "玖"); numStr.put(0, "零"); // Map<Integer, String> strMap = new HashMap<Integer, String>(); strMap.put(1, "元"); strMap.put(2, "拾"); strMap.put(3, "佰"); strMap.put(4, "仟"); strMap.put(5, "万"); strMap.put(6, "拾"); strMap.put(7, "佰"); strMap.put(8, "仟"); strMap.put(9, "亿"); strMap.put(10, "拾"); strMap.put(11, "佰"); strMap.put(12, "仟"); strMap.put(13, "万"); strMap.put(14, "拾"); StringBuilder numSBuilder = new StringBuilder(numString); numString = numSBuilder.toString(); while (numString.startsWith("0")) { numSBuilder.deleteCharAt(0); numString = numSBuilder.toString(); } char[] numchars = numString.toCharArray(); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < numchars.length; i++) { int num = Integer.parseInt(numchars[i] + ""); int index = numchars.length - i; if (index == numchars.length - 1) { if (num == 0) { if (i < numchars.length - 1) { if (Integer.parseInt(numchars[i - 1] + "") != 0) { sBuilder.append(numStr.get(num)); } } } else { sBuilder.append(numStr.get(num)); sBuilder.append(strMap.get(index)); } } else { if (index % 4 == 1) { if (num == 0) { sBuilder.append(strMap.get(index)); } else { sBuilder.append(numStr.get(num)); sBuilder.append(strMap.get(index)); } } else if (index % 4 == 2) { if (num == 0) { if (i < numchars.length - 1) { if (Integer.parseInt(numchars[i + 1] + "") != 0) { sBuilder.append(numStr.get(num)); } } } else { sBuilder.append(numStr.get(num)); sBuilder.append(strMap.get(index)); } } else if (index % 4 == 3) { if (num == 0) { if (i < numchars.length - 2) { if (Integer.parseInt(numchars[i + 1] + "") != 0 && Integer.parseInt(numchars[i + 2] + "") != 0) { sBuilder.append(numStr.get(num)); } } } else { sBuilder.append(numStr.get(num)); sBuilder.append(strMap.get(index)); } } else { if (num == 0) { sBuilder.append(numStr.get(num)); } else { sBuilder.append(numStr.get(num)); sBuilder.append(strMap.get(index)); } } } // System.out.println(sBuilder.toString()); } return sBuilder.toString(); } }

    转载请注明原文地址: https://ju.6miu.com/read-670981.html

    最新回复(0)