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

9/6/2015来源:Java教程人气:1475

中国传统数字, 正则表达式...不会
 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 }