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