看了略长 之前也做了这道题 上网搜索了一下 感觉自己就是个弱智
- public class Test9 {
- /**
- * 第九题: 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
- *
- * @param args
- */
- public static void main(String[] args) {
- //测试
- System.out.println(converse(640_0000_0023L));
- }
- private static String converse(long num) {
- //建立汉语数字数组
- char[] chineseNum = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
- //建立汉语量次数组
- char[] unite = { '圆', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰',
- '仟' };
- int index = 0;
- long lastNum;
- //从尾到头将数字按位置转换成汉语数字,并在后面加入量词.
- StringBuffer sb = new StringBuffer();
- while (num != 0) {
- lastNum = num % 10;
- sb.insert(0, unite[index++]);
- sb.insert(0, chineseNum[(int) lastNum]);
- num /= 10;
- }
- //使用正则表达式去重
- return sb.toString().replaceAll("零[拾佰仟]", "零").replaceAll("零 *亿", "亿")
- .replaceAll("零{4}万", "零").replaceAll("零*万", "万")
- .replaceAll("零+圆", "圆").replaceAll("零+", "零")
- + "整";
- }
- }
复制代码 |