中国传统数字, 正则表达式...不会

 1 package test;
 2 /*
 3  *第10题: 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
 4  *         步骤: 1.创建一个转换的方法converNumber(long number) 2.将阿拉伯形式转换成中国传统形式 3.去零操作 4.正则表达式替换操作 
 5  * */
 6 public class Test17
 7 {
 8     public static void main(String[] args)
 9     {
10         // 测试
11         System.out.println(convertNumber(3500908));
12         System.out.println(convertNumber(101000001010L));
13         System.out.println(convertNumber(10000000000L));
14     }
15     public static String convertNumber(long number)
16     {
17         // 定义字符数组存储中国数字写法格式
18         final char[] chineseNumber = new char[] { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
19         // 定义字符数组存储中国数字的单位
20         final char[] units = new char[] { '圆', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟' };
21         // 定义一个字符串缓冲区对字符进行存储
22         StringBuilder sb = new StringBuilder();
23         int index = 0;
24         long lastNumber = 0;
25         while (number != 0)
26         {
27             lastNumber = number % 10;
28             sb.insert(0, units[index++]);
29             sb.insert(0, chineseNumber[(int) lastNumber]);
30             number = number / 10;
31         }
32         // 去零操作,通过正则表达式
33         return sb.toString().replaceAll("零[拾佰仟]", "零").replaceAll("零+亿", "亿").replaceAll("零{4}万", "零").replaceAll("零+万", "万").replaceAll("零+圆", "圆").replaceAll("零+", "零") + "整";
34     }
35 }

 1

posted @ 2014-11-01 20:45  testman00  阅读(389)  评论(0编辑  收藏  举报